CN112363828B - 内存碎片管理方法、装置、车载***及车辆 - Google Patents
内存碎片管理方法、装置、车载***及车辆 Download PDFInfo
- Publication number
- CN112363828B CN112363828B CN202011186943.XA CN202011186943A CN112363828B CN 112363828 B CN112363828 B CN 112363828B CN 202011186943 A CN202011186943 A CN 202011186943A CN 112363828 B CN112363828 B CN 112363828B
- Authority
- CN
- China
- Prior art keywords
- memory
- fragmentation
- task
- safety
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000007726 management method Methods 0.000 title claims abstract description 87
- 239000012634 fragment Substances 0.000 title claims abstract description 39
- 238000013467 fragmentation Methods 0.000 claims abstract description 273
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 273
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000008569 process Effects 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 14
- 230000009286 beneficial effect Effects 0.000 abstract description 7
- 230000002829 reductive effect Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000013508 migration Methods 0.000 description 7
- 230000005012 migration Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005184 irreversible process Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本公开涉及一种内存碎片管理方法、装置、车载***及车辆。该方法包括:获取内存地址空间的分配信息;基于所述分配信息,确定内存碎片化程度指标;基于所述内存碎片化程度指标,确定重新进行内存分配;获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。本公开实施例提供的技术方案可适用于应用层面,在利用安全标识实现任务安全保护的同时,改善内存碎片化的问题,有利于确保任务运行安全性,同时提高内存利用率。
Description
技术领域
本公开涉及车辆技术领域,尤其涉及一种内存碎片管理方法、装置、车载***及车辆。
背景技术
随着车辆技术和互联网技术的不断发展,车辆的智能化程度和可交互性越来越高。其中,车与人、车与外界(例如车与车、车与远端控制中心)之间的信息通讯通常由车载***实现。现有技术中,车载***中的部分软件程序需执行复杂性较高的业务,此时对软件质量(包括可靠性、运行时延等)要求较高。业务的复杂性,意味着参与开发的人员较多,所以可能带来软件整体质量的下降。同时,因为运行时延的问题,通常是基于C、C++等可以规避语言本身的资源自动管理行为的编程语言,但会导致内存资源散乱无序。而这其中一个比较容易出现的问题是内存外碎片问题,即剩余内存控件较多,却无法分配出较大的连续内存,进而导致业务执行失败,而且碎片化是一个不可逆的过程。
现有技术中,内存碎片管理方法通常包括内存池和内存迁移。其中,采用内存池可对分配的内存大小进行提前规划,内存的分配使用会限定在一个提前规划好的内存范围内,避免碎片化扩展到整个***。但当业务比较复杂且不断变化时,内存池无法满足业务需求。而内存迁移通常应用在内核层面,用于内存长时间使用后的碎片化情况。进行内存迁移后,需进行页表修改,不适用应用层面的业务场景。此外,现有的内存碎片管理方法安全性较差。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种内存碎片管理方法、装置、车载***及车辆。
本公开实施例提供了一种内存碎片管理方法,该方法包括:
获取内存地址空间的分配信息;
基于所述分配信息,确定内存碎片化程度指标;
基于所述内存碎片化程度指标,确定重新进行内存分配;
获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。
在一些实施例中,所述获取内存地址空间的分配信息包括:
扫描内存地址空间的占用信息;
基于所述占用信息,确定最大连续空闲内存空间的大小和总空闲内存空间的大小。
在一些实施例中,所述基于所述分配信息,确定内存碎片化程度指标包括:
基于所述最大连续空闲内存空间的大小M和所述总空闲内存空间的大小T,采用f=1-M/T计算所述内存碎片化程度指标f。
在一些实施例中,所述基于所述内存碎片化程度指标,确定重新进行内存分配包括:
获取碎片化安全阈值;
若所述内存碎片化程度指标大于所述碎片化安全阈值,则确定重新进行内存分配。
在一些实施例中,该方法还包括:
若所述内存碎片化程度指标等于或小于所述碎片化安全阈值,则不重新进行内存分配。
在一些实施例中,所述基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务包括:
获取所述安全标识关联的代码段,所述代码段为当前运行中任务的至少部分代码;
获取辅助阈值;其中,所述辅助阈值用于保护所述安全标识限定的代码段运行,所述辅助阈值大于所述碎片化安全阈值;
若所述内存碎片化程度指标等于或小于所述辅助阈值,且所述当前运行中任务运行于所述代码段内,则继续运行当前运行中任务;
直到确定所述代码段运行结束,重启所述当前运行中任务。
在一些实施例中,该方法还包括:
若所述内存碎片化程度指标大于所述辅助阈值,则立即重启所述当前运行中任务。
在一些实施例中,该方法还包括:
将当前运行中任务进行重启前的数据备份。
本公开实施例还提供了一种内存碎片管理装置,该装置包括:
分配信息获取模块,用于获取内存地址空间的分配信息;
碎片化程度指标确定模块,用于基于所述分配信息,确定内存碎片化程度指标;
内存重新分配确定模块,用于基于所述内存碎片化程度指标,确定重新进行内存分配;
内存重新分配执行模块,用于获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。
在一些实施例中,所述分配信息获取模块包括:
占用信息获取子模块,用于扫描内存地址空间的占用信息;
特征参数确定子模块,用于基于所述占用信息,确定最大连续空闲内存空间的大小和总空闲内存空间的大小。
在一些实施例中,所述碎片化程度指标确定模块具体用于:基于所述最大连续空闲内存空间的大小M和所述总空闲内存空间的大小T,采用f=1-M/T计算所述内存碎片化程度指标f。
在一些实施例中,所述内存重新分配确定模块包括:
第一阈值获取子模块,用于获取碎片化安全阈值;
分配确定子模块,用于若所述内存碎片化程度指标大于所述碎片化安全阈值,则确定重新进行内存分配。
在一些实施例中,该装置还包括:
内存分配保持模块,用于若所述内存碎片化程度指标等于或小于所述碎片化安全阈值,则不重新进行内存分配。
在一些实施例中,所述内存重新分配执行模块包括:
特征代码段确定子模块,用于获取所述安全标识关联的代码段,所述代码段为当前运行中任务的至少部分代码;
第二阈值获取子模块,用于获取辅助阈值;其中,所述辅助阈值用于保护所述安全标识限定的代码段运行,所述辅助阈值大于所述碎片化安全阈值;
当前运行中任务保持子模块,用于若所述内存碎片化程度指标等于或小于所述辅助阈值,且所述当前运行中任务运行于所述代码段内,则继续运行当前运行中任务;
当前运行中任务重启子模块,用于直至确定所述代码段运行结束,重启所述当前运行中任务。
在一些实施例中,该装置还包括:
当前运行中任务即刻重启模块,用于若所述内存碎片化程度指标大于所述辅助阈值,则立即重启所述当前运行中任务。
在一些实施例中,该装置还包括:
数据备份模块,用于将当前运行中任务进行重启前的数据备份。
本公开实施例还提供了一种车载***,该车载***包括:
处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行上述任一种方法的步骤。
本公开实施例还提供了一种车辆,该车辆包括上述车载***。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的内存碎片管理方法中,获取内存地址空间的分配信息;基于分配信息,确定内存碎片化程度指标;基于内存碎片化程度指标,确定重新进行内存分配;获取当前运行中任务的安全标识,并基于安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。如此,该内存碎片管理方法可适用于应用层面,在利用安全标识进行业务安全保护的同时,改善内存碎片化的问题,有利于降低内存碎片整理对业务运行的不良影响,提高业务运行安全性,同时经过内存碎片整理,减少内存碎片,可提高内存利用率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例的一种内存碎片管理方法的流程示意图;
图2为本公开实施例的另一种内存碎片管理方法的流程示意图;
图3为本公开实施例的又一种内存碎片管理方法的流程示意图;
图4为本公开实施例的又一种内存碎片管理方法的流程示意图;
图5为本公开实施例的又一种内存碎片管理方法的流程示意图;
图6为本公开实施例的一种内存碎片管理装置的结构示意图;
图7为本公开实施例的另一种内存碎片管理装置的结构示意图;
图8为本公开实施例的又一种内存碎片管理装置的结构示意图;
图9为本公开实施例的一种车载***的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
现有技术中,在进行内存分配时,是按照内存分配请求的时间顺序依次分配,每次分配请求的内存大小不等。例如可以响应于内存分配请求的时间顺序,依次为进程分配30M、10M、15M、50M、10M、30M这六个内存资源,而上述内存在分配给不同的进程后,会根据进程的状态进行内存资源的释放。例如上述六个内存资源,其中使用两个10M内存资源的进程已结束,此时这两个内存资源也会被释放;但该两个内存资源在物理上是隔离的,无法被同时分配给一个进程,此次若接收到分配20M内存资源的分配请求,是无法进行内存分配的。另外,例如50M内存资源释放后又被分配给45M内存需求的进程,则会有5M内存资源无法分配,因此,现有技术在内存使用过程中存在碎片化的问题。
针对内存碎片化问题,提出内存碎片管理方法。现有内存碎片管理方法主要包括内存池和内存迁移。采用内存池进行内存碎片管理的缺点主要体现在:第一,如果业务比较复杂且在不停地变化,则对内存的需求也一直在变化,而根据业务的变化,找到一个合适的内存池需要更完整的测试,导致内存匹配的周期较长。同时,由于很难确保所有的业务执行路径,所以无法保证内存池完全适应业务需求。第二,业务也可能经常汇合一些三方库,或者可能使用一些内核层面的接口,而这部分的内存不可控,当使用次数较多时,也有可能造成内存的碎片化。
采用内存迁移进行内存碎片管理是在内核层面执行,本身支持内存规整(memorycompaction),用于内存长时间使用后的碎片化情况,其缺点主要体现在:本身需要进行内存迁移后,并对应进行页表修改。不适用应用层面的业务场景。
其他内存碎片管理方法中,对内存碎片的整理还可能影响运行中的业务,导致业务运行出错或被强行终止的问题,即内存碎片管理的安全性较差。
针对上述至少部分问题,本公开实施例提出一种新的、且较为简单的内存碎片管理方法,可适用于应用层面的业务场景,适用于较为复杂的***,通过安全点(即安全标识)配合异常回调的方式,提供了一种可以进行业务安全重启的方式,在保证业务安全的同时,进行内存空间的重新分配,整合出连续的大块空闲内存;改善了***长时间运行之后,内存碎片的数量较多,而导致***性能变差的问题,同时改善了因内存碎片整理干扰而导致的业务不能正常运行的问题,从而确保了业务运行安全性。
具体地,首先,本公开实施例提供的内存碎片管理方法,是在确定内存碎片化程度较严重时,利用重启***的方式进行内存地址空间的重新分配,从而各内存大小可适应于任务的内存需求大小而灵活分配,从而避免了采用内存池进行内存碎片管理,即内存大小提前规划而存在的内存分配不灵活,无法适用于复杂的***的问题。同时,由于无需将提前规划的内存大小与任务所需的内存大小进行匹配,而是基于任务所需的内存大小重新进行内存分配,从而节省了匹配的过程,有利于减少内存碎片整理的周期,内存分配速度较快。同时,不需要汇合三方库或使用内核层面的接口,避免了这部分的内存碎片,使得内存碎片的可控性较好,碎片整理效果较好。其次,本公开实施例提供的内存管理方法,是将***中的任务重启,并基于内存连续分配的原则,对内存地址空间进行重新分配,从而降低内存碎片化程度;其中并不涉及内存迁移过程,不需要进行页表修改,可适用于应用层面的业务场景。再次,本公开实施例提供的内存碎片管理方法利用安全标识对当前运行中业务进行安全保护,从而该具有安全标识的当前运行中任务不会被强行终止,不会因内存碎片整理而出现运行出错的问题,提高了内存碎片管理的安全性。
本公开实施例提供的内存碎片管理方法可适用于任何一种内存的内存碎片整理,以用来降低内存碎片严重程度,从而提高内存利用率,且确保任务安全运行。例如,该方法可应用于固定终端(例如智能电视或电脑)或移动终端(例如智能手机、平板、移动电脑或智能车辆)。其中,将该内存碎片管理方法应用于车辆(例如智能车辆)中时,该方法可由车辆中的任一具有内存的***执行,下文中以车载***(包括车机)为例进行示例性说明。
下面结合图1-图9,对本公开实施例提供的内存碎片管理方法、装置、车载***及车辆进行示例性说明。
示例性地,图1为本公开实施例的一种内存碎片管理方法的流程示意图。参照图1,该方法包括:
S110、获取内存地址空间的分配信息。
其中,内存地址空间(下文中也可简称为“内存”)的分配信息用于表征内存地址空间的分配情况,例如可表征内存地址空间中被占用的空间和未被占用的空间的分布情况。其中,未被占用的空间包括自始就未被占用的空间,也包括被占用之后又被释放的空间。被占用的空间可包括单个业务占用的连续空间,或者多个业务占用的连续空间,本实施例对此不区分,可将被一个或多个任务占用的连续空间视为同一个被占用的空间。
示例性地,分配信息可为:内存地址空间中,0-100M的空间被占用,100-110M的空间未被占用,110M-190M的空间被占用,190-200M的空间未被占用,200-300M的空间被占用,诸如此类,本公开实施例不一一列举,对此也不做限定。可理解的是,分配信息可基于该方法应用场景的不同而发生变化。
示例性地,该步骤中的分配情况的获取方式,可基于历史内存分配请求记录及空间释放记录实现。结合上文,在一时段内,响应于内存分配请求的时间顺序,依次分配出30M、10M、15M、50M、10M、30M这六个内存资源。其中,两个使用10M内存资源的任务结束时,这两个内存资源会被释放。此时分配信息可为:内存地址空间中,0-30M的空间被占用,30-40M的空间未被占用,40-105M的空间被占用,105-115M的空间未被占用,115-145M的空间被占用。进一步地,50M内存资源释放后又被分配给45M内存需求的任务,则会又有5M内存资源被释放。此时分配信息可为:内存地址空间中,0-30M的空间被占用,30-40M的空间未被占用,40-100M的空间被占用,100-115M的空间未被占用,115-145M的空间被占用。此仅为示例性地说明,不构成对本公开实施例提供的内存碎片管理方法中,内存分配情况的限定。
在其他实施方式中,分配情况的获取方式还可基于对内存地址空间的占用信息进行周期性扫描实现,下文中结合图2进行示例性说明;或可基于其他方式实现,本公开实施例对此不限定。
S120、基于分配信息,确定内存碎片化程度指标。
其中,内存碎片化程度指标(下文中也可称为“碎片化程度指标”)用于表征内存的碎片化程度。结合对S110的说明,利用分配信息可确定内存中的各占用空间和各空闲空间,基于占用空间和空闲空间的相对大小,或者基于空闲空间的总量与各空闲空间的连续大小,可确定内存的碎片化程度,即确定内存碎片化程度指标,下文中结合图3进行示例性说明。
S130、基于内存碎片化程度指标,确定重新进行内存分配。
其中,内存碎片化程度指标可表征内存碎片化的严重与否。
当内存碎片化较严重时,内存碎片较多,即无法有效利用的碎片较多,此时,为了将内存碎片集中到一起,形成较大的连续内存空间,需要重新进行内存分配,即该步骤中,若碎片化较严重,则确定重新进行内存分配。
当内存碎片化较轻微时,内存碎片在一定程度上还可被利用,此时为了保持***运行的连续性,可不进行内存重新分配。
示例性的,内存碎片化严重时,内存碎片化程度指标可偏大,内存碎片化较轻微时,内存碎片化程度指标可偏小;或者,内存碎片化严重时,内存碎片化程度指标可偏小,内存碎片化较轻微时,内存碎片化程度指标可偏大。该内存碎片化严重与否与内存碎片化程度指标的对应关系,可基于内存碎片华程度指标的计算方式不同而存在差异,本公开实施例对此不限定。下文中以后者为例,结合图4进行示例性说明。
S140、获取当前运行中任务的安全标识,并基于安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。
其中,安全标识用于区分任务安全边界,在安全边界内,***不会强行终止当前运行中任务所在进程,而是等安全边界内的进程运行完(此处需要的时间即为安全时间)之后,才可重启当前运行中任务。从而有利于保证安全边界内的程序正常运行,有利于减少内存碎片整理引起的当前运行中任务运行出错或被强制终止执行的问题,提高当前运行中任务的运行安全性,即提高内存碎片整体的安全性。
其中,安全标识可在进行内存碎片管理之前,基于各任务的重要等级添加。此处的重要与否是相对于***实现其具有的功能而言,若某任务为***实现其功能所必须的,则该任务为重要任务;若某任务为***实现其功能不必须的,则该任务为不重要任务。此时,安全标识可设置于任务对应的完整代码的收尾。或者,当任务中的部分代码需要被保护时,安全标识可设置在需要被保护的代码段的两端,下文中详述。示例性的,安全标识可通过函数cs_start(),cs_end()实现。
该步骤中基于重启当前运行中任务的方式,实现内存地址空间的重新分配,不需要提前规划内存空间,不存在任务大小与规划出来的内存大小进行匹配的过程,而是基于被重启的当前运行中任务所需内存的大小,连续地灵活分配内存地址空间,以减少内存碎片。如此,与采用内存池进行碎片管理的方式相比,本公开实施例提供的内存碎片管理方式内存重新分配的灵活性较高,可适用于复杂多变的业务场景,且节省了内存匹配的过程,重新进行内存分配时,分配速度较快,周期较短。同时,该内存碎片管理方法不涉及三方库和内核层面的接口,可适用于应用层面的业务场景,其内存碎片的可控化程度较高,内存碎片的整理效果较好。
本公开实施例提供的内存碎片管理方法中,获取内存地址空间的分配信息;基于所述分配信息,确定内存碎片化程度指标;基于所述内存碎片化程度指标,确定重新进行内存分配;获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。如此,可适用于应用层面,在利用安全标识实现任务安全保护的同时,改善内存碎片化的问题,有利于在提高内存利用率的同时,降低对任务运行安全性的影响。
上述内存碎片管理方法,可基于外界触发而执行,或自动周期性的执行,本公开实施例对此不限定。
在一些实施例中,图2为本公开实施例的另一种内存碎片管理方法的流程示意图,示出了S110的细化执行流程。在图1的基础上,参考图2,该方法中,S110可包括:
S111、扫描内存地址空间的占用信息。
其中,占用信息包括被占用内存空间的大小和位置,由此可确定空闲内存空间的大小和位置。
示例性地,结合上文,占用信息可为:内存地址空间中,0-100M的空间被占用,110M-190M的空间被占用,200-300M的空间被占用。或者占用信息可为:内存地址空间中,0-30M的空间被占用,40-105M的空间被占用,115-145M的空间被占用。或者占用信息可为:内存地址空间中,0-30M的空间被占用,40-100M的空间被占用,115-145M的空间被占用。此仅为示例性地说明,并不构成对本公开实施例中占用信息的限定。基于此,相邻两个被占用空间之间的未被占用的空间即为空闲内存空间,如此可确定各空闲内存空间的位置和大小。
该步骤中,可定期或不定期地对内存地址空间的占用信息进行扫描。示例性地,可按照预设时间周期性地扫描内存地址空间的占用信息,预设时间可为1小时、3小时、1天或其他时长,可根据该方法应用的场景设置,本公开实施例对此不限定。基于此,通过周期性地扫描内存地址空间的占用信息,便于实现内存碎片化程度的周期性监控,有利于实现内存碎片的周期性整理,从而实现对内存地址空间的有效管理,有利于降低内存碎片对***性能的影响。
在其他实施方式中,还可基于内存的使用情况,结合内存碎片管理需求,不定期的进行碎片整理,本公开实施例对此不限定。
S112、基于占用信息,确定最大连续空闲内存空间的大小和总空闲内存空间的大小。
其中,基于占用信息,可确定各空闲内存空间的大小,通过将各空闲内存空间的大小进行比较,或者利用最大值函数,即可得到最大连续空闲内存空间的大小;通过对各空闲内存空间的大小进行求和,即可得到总空闲内存空间的大小。
示例性地,结合上文S111中对占用信息的示例性说明,当占用信息为:内存地址空间中,0-100M的空间被占用,110M-190M的空间被占用,200-300M的空间被占用时,存在两个大小均为10M的空闲内存空间;基于此,最大连续空闲内存空间的大小为10M,总空闲内存空间的大小为20M。当占用信息为:内存地址空间中,0-30M的空间被占用,40-105M的空间被占用,115-145M的空间被占用时,也是存在两个大小均为10M的空闲内存空间;基于此,最大连续空闲内存空间的大小为10M,总空闲内存空间的大小为20M。当占用信息为:内存地址空间中,0-30M的空间被占用,40-100M的空间被占用,115-145M的空间被占用时,存在两个空闲内存空间,其大小分别为10M和15M;基于此,最大连续空闲内存空间的大小为15M,总空闲内存空间的大小为25M。此仅为示例性地说明,并不构成对本公开实施例中空闲内存空间的限定。
至此,完成S110。
可理解的是,该步骤中,对应于分配信息的特征参数为最大连续空闲内存空间的大小和总空闲内存空间的大小。如此有利于简化后续步骤中内存碎片化程度指标的确定方式,简化内存碎片管理方法,节省时间,提高内存碎片管理效率。
在其他实施方式中,当采用区别于下文中示出的其他方式确定内存碎片化程度指标时,分配信息还可包括其他特征参数,本公开实施例对此不限定。
图2中示出的其他步骤与图1中对应相同,可参照上文进行理解,此处不赘述。下文中的图3-图5中存在的与图1中对应相同的步骤,也可参照对图1的解释说明进行理解,下文中不再赘述。
在一些实施例中,图3为本公开实施例的又一种内存碎片管理方法的流程示意图,示出了S120的细化执行流程。在图1的基础上,参照图3,S120具体可包括:
基于最大连续空闲内存空间的大小M和总空闲内存空间的大小T,采用f=1-M/T计算内存碎片化程度指标f。
如此,通过利用最大连续空闲内存空间的大小M除以总空闲内存空间的大小T,得到M/T;再利用1减去M/T,即可得到内存碎片化程度指标f,且计算方式较简单。
示例性的,M=5M,T=100M时,f=1-5M/100M=1-1/20=19/20。此仅为示例性的说明,并不构成对本公开实施例的限定。在其他实施方式中,M和F的大小基于内存占用信息确定。
如此,可采用较简单的方式实现对内存碎片化程度指标f的计算,有利于简化内存碎片管理方法,提高内存碎片管理效率。
在其他实施方式中,还可基于分配信息确定其他与碎片化相关的特征参数,并采用对应的方式计算内存碎片化程度指标,可根据内存碎片管理方法的需求设置,本公开实施例对此不限定。
在一些实施例中,图4为本公开实施例的又一种内存碎片管理方法的流程示意图,示出了S130的细化执行流程。在图1的基础上,参照图4,S130可包括:
S131、获取碎片化安全阈值。
其中,碎片化安全阈值为衡量内存碎片化程度是否严重的参考值,也可称为碎片化安全指标。后续通过将内存碎片化程度指标与该碎片化安全阈值进行比较,可确定内存碎片化是否严重。
示例性地,碎片化安全阈值可存储于一存储空间内,该步骤可直接调用该碎片化安全阈值;或者,碎片化安全阈值可在执行内存碎片管理的过程中,基于交互***,由用户选择或设定,本公开实施例对此不限定。
S132、若内存碎片化程度指标大于碎片化安全阈值,则确定重新进行内存分配。
其中,结合上述S120中碎片化程度指标f的计算方式,碎片化程度指标f较大时,表明最大连续空闲内存空间在总空闲内存空间中的占比较小,而其他各连续空闲内存空间的大小均小于最大连续空闲内存空间的大小,由此,空闲内存空间中,各连续空闲内存空间均较小,内存碎片化严重。反之,在碎片化程度指标f较小时,表明最大连续空闲内存空间在总空闲内存空间中的占比较大,此时,还可能存在其他的连续空闲内存空间在总空闲内存空间中的占比也较大,从而,存在可以被利用的连续空闲内存空间,由此,内存碎片化不严重。
基于此,设置碎片化安全阈值,并且当内存碎片化程度指标大于碎片化安全阈值时,表明内存碎片化严重,此时确定重新进行内存分配,以改善内存碎片化程度。
示例性的,碎片化安全阈值的取值可为大于80%且小于90%的任一值,或者根据内存碎片整理需求,碎片化安全阈值的取值可为大于0且小于1的任一值,本公开实施例对此不做限定。
示例性的,碎片化安全阈值的取值可为固定值,或者根据***的不同需求为可调节的值;碎片化安全阈值的设定方式可为在软件程序中内置固定值,或者通过交互直接输入点值,或可经滑动选择设定,本公开实施例对此不限定。
在其他实施方式中,当碎片化程度指标f采用其他方式计算时,碎片化安全阈值的取值可基于碎片化程度指标f的计算原理对应设置,本公开实施例对此不做限定。
在图4的基础上,若碎片化程度指标并未超过碎片化安全阈值,即前者较小,或二者相等,则内存碎片对***的影响较小,此时无需进行内存重新分配。
结合上文,该方法还可包括:
若内存碎片化程度指标等于或小于碎片化安全阈值,则不重新进行内存分配。
其中,当内存碎片化程度指标小于或等于碎片化安全阈值时,内存碎片化不严重,内存碎片对***的影响较小。此时,以***持续运行优先,无需重新分配内存。
本公开实施例提供的内存碎片管理方法中,可采用较简单的计算方式确定碎片化程度指标,并且基于碎片化程度指标与碎片化安全阈值的相对大小,确定是否需要进行内存重新分配。由此,内存碎片化程度的衡量方式较简单,有利于提高内存碎片整理效率。同时,可基于内存碎片化整理需求灵活设置碎片化安全阈值的大小,使得该内存碎片整理方法可灵活适用于多种不同的业务场景。
在上述实施方式中,当内存碎片化程度较严重,需要重启当前运行中任务时,可根据内存碎片化的严重级别(下文中以两个级别为例进行示例性说明),确定重启当前运行中任务的缓急程度。示例性的,紧急情况下,可立即重启当前运行中的程序;非紧急情况下,可待被安全标识限定的代码段(即安全标识关联的代码段)运行结束后,重启任务。下文中结合图5进行示例性说明。
在一些实施例中,图5为本公开实施例的又一种内存碎片管理方法的流程示意图,示出了S140的细化执行流程。在图1的基础上,参照图5,S140可包括:
S141、获取辅助阈值。
其中,辅助阈值用于衡量内存碎片化的严重程度。
结合上文,辅助阈值大于碎片化安全阈值。当内存碎片化程度指标介于碎片化安全阈值与辅助阈值之间时,表明内存碎片化程度不是很严重,无需立即进行内存的重新分配;此时可等被安全保护的当前运行中任务或当前运行中任务的被安全保护的代码段运行完成之后,再重启任务。当内存碎片化程度指标大于辅助阈值时,表明内存碎片化程度很严重,此时内存碎片严重影响***性能,需要立即重启所有任务。
示例性地,辅助阈值可基于碎片化安全阈值的设置而对应设置。例如,碎片化安全阈值为85%时,辅助阈值可为88%、90%、95%或为大于85%且小于1的任一值,本公开实施例对此不限定。
在其他实施方式中,当内存碎片化程度指标采用其他方式进行计算时,若碎片化安全阈值小于内存碎片化程度指标时,表明内存碎片化严重,则设置辅助阈值小于碎片化安全阈值。
S142、若内存碎片化程度指标等于或小于辅助阈值,则确定安全标识限定的代码段。
其中,若内存碎片化程度指标等于或小于辅助阈值,则表面内存碎片化不是很严重,可无需立即重新进行内存分配,此时可等被安全保护的代码段运行结束之后,再重启任务。
其中,安全标识限定的代码段即被安全保护的代码段,该代码段为对应于当前运行中任务的至少部分代码。
在一些实施例中,当该代码段为当前运行中任务的部分代码时,该代码段对应的进程结束后,即可重启当前运行中任务,而无需等该当前运行中任务的所有代码均运行结束。
在一些实施例中,该代码段还可为当前运行中任务的全部代码,此时,当前运行中任务的全部代码均被安全保护,从而当前运行中任务的完整代码均运行结束后,才重启任务。
示例性的,结合上文,当采用函数cs_start(),cs_end()作为安全标识时,可通过识别该函数,确定安全标识限定的代码段。
S143、若当前运行中任务运行于代码段内,则继续运行当前运行中任务。
其中,在当前运行中任务运行于被安全标识限定的代码段中时,***不会主动终止该代码段的运行,而是需要等该代码段运行结束,如此保证安全标识限定的进程或完整的当前运行中任务正常运行。
S144、直到确定代码段运行结束,重启当前运行中任务。
其中,从确定安全标识保护的代码段开始,到该被安全标识保护的代码段运行结束为止,该段时间即为安全时间。从而,等待安全时间之后,被安全保护的代码段运行结束,此时可重启任务。
至此,完成S140,即实现了重新进行内存分配。
其中,重启任务的本质是为了重启该任务所在的***,以使***中的内存重新连续分配,从而降低内存碎片化程度。在实际实现方式中,可等所有任务均运行结束后,再重启***;或者,自***的内存的起始可存储位置开始进行任务重启,即开始***重启;遇到被安全保护的任务或任务中的部分代码段时,暂停重启;等该被安全保护的任务或任务中的部分代码段运行结束,再继续***重启,直至完成重启***。
在其他实施方式中,还可先获取安全标识关联的代码段,再获取辅助阈值,本公开实施例对此不限定。
在图5的基础上,若碎片化程度较严重,则可立即重启当前运行中任务,以降低内存碎片化对***的影响。即,该方法还可包括:若内存碎片化程度指标大于辅助阈值,则立即重启当前运行中任务。
在上述实施方式中,还可在进行重启之前,对当前运行中任务的相关数据进行备份,从而有利于确保重启后的任务可正常运行。
在一些实施例中,该方法的执行流程可包括:
首选,业务中的任务根据自身业务性质,判断相关代码段P是否需要增加安全标识限定,如果重启会导致较严重后果,则对相关代码通过安全保护实现函数cs_start(),cs_end()进行保护。
其中,实现函数cs_start(),cs_end(),用于区分业务安全标识(限定安全边界位置)。在安全标识内,***不会进行主动重启业务所在进程,从而保证安全标识内的程序正常运行。
其后,性地扫描当前运行中任务进程的内存地址空间占用信息,得到内存地址空间的分配信息。
其后,根据分配信息计算内存地址空间的内存碎片化程度指标,以表征内存碎片化情况。
具体方式可为:基于内存地址空间的占用信息,得到最大块连续空闲内存空间的大小M,以及总空闲内存空间的大小T,并计算得到碎片化程度指标f=1-M/T;
其后,获取碎片化安全阈值fs,fs为可调参数。
将碎片化程度指标f与碎片化安全阈值fs进行比较。
如果碎片化程度指标f小于碎片化安全阈值fs,则本次不做任何处理。
如果碎片化程度指标f大于碎片化安全阈值fs,则发出重启通知。
各业务收到通知后,可进行重启前的收尾工作。
其后,等各业务收尾工作处理完毕后,判断当前业务是否仍然处于安全代码段P内。
如果P没有进行,则执行重启。
如果P在进行,则暂停重启,等待P运行结束。
当P结束时,继续***重启。
该内存碎片管理方法中,由于重启后的***,会对业务进行重新初始化,内存也会重新分配,从而减少了内存碎片化情况,提高内存利用率;同时,基于安全标识实现对业务对应代码段的保护,可提高业务运行安全性。
本公开实施例提供的内存碎片管理方法,在利用安全标识保证业务安全的同时,避免了***长时间运行后,内存碎片的恶化而导致的关键时候出现因内存失败导致业务不能正常运行的问题,即提高了内存利用率,有利于减少业务不能正常运行的情况,确保业务及***整体正常运行;同时,内存碎片化程度指标的计算方式以及内存碎片化程度的确定方式较简单,有利于降低内存碎片整体方法的难度,提高其执行效率,从而进一步提升***性能。
在上述实施方式的基础上,本公开实施例还提供了一种内存碎片管理装置。该内存碎片管理装置可用于执行上述实施方式中的任一种内存碎片管理方法,因此,该内存碎片管理装置也具有上述实施方式中的任一种内存碎片管理方法所具有的有益效果,相同之处可参照上文中对内存碎片管理方法的解释说明进行理解,下文中不再赘述。
示例性地,图6为本公开实施例的一种内存碎片管理装置的结构示意图。参照图6,该装置可包括:分配信息获取模块310,用于获取内存地址空间的分配信息;碎片化程度指标确定模块320,用于基于分配信息,确定内存碎片化程度指标;内存重新分配确定模块330,用于基于内存碎片化程度指标,确定重新进行内存分配;内存重新分配执行模块340,用于获取当前运行中任务的安全标识,并基于安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。
本公开实施例提供的内存碎片管理装置中,分配信息获取模块310可获取内存地址空间的分配信息;碎片化程度指标确定模块320可基于分配信息,确定内存碎片化程度指标;内存重新分配确定模块330可基于内存碎片化程度指标,确定重新进行内存分配;内存重新分配执行模块340可获取当前运行中任务的安全标识,并基于安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。如此,可适用于应用层面,在利用安全标识实现任务安全保护,避免任务被强行终止,确保***运行安全的同时,改善内存碎片化的问题,有利于在提高内存利用率的同时,降低对任务运行安全性的影响。
同时,该装置中的内存重新分配执行模块340基于重启当前运行中任务的方式,实现内存地址空间的重新分配,不需要提前规划内存空间,不存在任务大小与规划出来的内存大小进行匹配的过程,而是基于被重启的当前运行中任务所需内存的大小,连续地灵活分配内存地址空间,以减少内存碎片。如此,与采用内存池进行碎片管理的方式相比,该装置可实现的内存管理方式的内存重新分配的灵活性较高,可适用于复杂多变的业务场景,且节省了内存匹配的过程,重新进行内存分配时,分配速度较快,周期较短。同时,该装置实现内存碎片管理方法时,不涉及三方库和内核层面的接口,可适用于应用层面的业务场景,其内存碎片的可控化程度较高,内存碎片的整理效果较好。
在一些实施例中,图7为本公开实施例的另一种内存碎片管理装置的结构示意图。在图6的基础上,参照图7,分配信息获取模块310包括:占用信息获取子模块311,用于扫描内存地址空间的占用信息;特征参数确定子模块312,用于基于占用信息,确定最大连续空闲内存空间的大小和总空闲内存空间的大小。
如此,可利用占用信息获取子模块311和特征参数确定子模块312,实现获取内存地址空间的分配信息,且分配信息中的用于确定内存碎片化指标的特征参数数量较少,获取方式简单,同时有利于简化后续计算过程,有利于提高内存碎片管理效率。
在一些实施例中,继续参照图7,碎片化程度指标确定模块320具体用于:基于最大连续空闲内存空间的大小M和总空闲内存空间的大小T,采用f=1-M/T计算内存碎片化程度指标f。
如此,碎片化程度指标确定模块320可基于分配信息,确定内存碎片化程度指标;同时,可采用上述直接计算比值的方式确定内存碎片化程度指标f,计算方式简单,出错率较低,有利于简化内存碎片管理方法,提高内存碎片管理效率。
在一些实施例中,继续参照图7,内存重新分配确定模块330包括:第一阈值获取子模块331,用于获取碎片化安全阈值;分配确定子模块332,用于若内存碎片化程度指标大于碎片化安全阈值,则确定重新进行内存分配。
如此,可结合碎片化安全阈值,确定重新进行内存分配。
在一些实施例中,继续参照图7,该装置还包括:内存分配保持模块350,用于若内存碎片化程度指标等于或小于碎片化安全阈值,则不重新进行内存分配。
如此,可实现在内存碎片化不严重时,继续***运行。
同时,基于碎片化安全阈值与碎片化程度指标的相对大小,确定是否需要重新分配内存,使得内存碎片化程度的衡量方式较简单,有利于提高内存碎片整理效率。且可基于内存碎片化整理需求灵活设置碎片化安全阈值的大小,从而该内存碎片整理方法可灵活适用于多种不同的业务场景。
在一些实施例中,继续参照图7,内存重新分配执行模块340包括:特征代码段确定子模块342,用于获取所述安全标识关联的代码段,所述代码段为当前运行中任务的至少部分代码;第二阈值获取子模块341,用于获取辅助阈值;其中,所述辅助阈值用于保护所述安全标识限定的代码段运行,所述辅助阈值大于所述碎片化安全阈值;当前运行中任务保持子模块343,用于若所述内存碎片化程度指标等于或小于所述辅助阈值,且当前运行中任务运行于代码段内,则继续运行当前运行中任务;当前运行中任务重启子模块344,用于直至确定代码段运行结束,重启当前运行中任务。
如此,可实现在内存碎片化不是很严重时,等被安全保护的代码段运行结束后,再重启***,从而可确保至少部分任务运行结束,降低内存碎片整理对***运行状态和***性能的影响。
在一些实施例中,继续参照图7,该装置还包括:当前运行中任务即刻重启模块345,用于若内存碎片化程度指标大于辅助阈值,则立即重启当前运行中任务。
如此,可在内存碎片化较严重时,立即重启***。
在一些实施例中,图8为本公开实施例的又一种内存碎片管理装置的结构示意图。在图6的基础上,参照图8,该装置还包括:数据备份模块360,用于将当前运行中任务进行重启前的数据备份。
如此,可确保数据安全。
在上述实施方式的基础上,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序;计算机程序被处理器执行时,实现上述任一种方法的步骤。因此,该存储介质也具有上述实施方式中的方法所具有的有益效果,相同之处可参照上文中对方法的解释说明进行理解,此处不赘述。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令(计算机程序),用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开上述任一实施例中的方法。
在上述实施方式的基础上,本公开实施例还提供了一种车载***,该车载***可包括处理器和存储器;处理器通过调用存储器存储的程序或指令,用于执行本公开实施例的上述任一种方法的步骤。因此,该车载***也具有上述实施例中的任一种方法和装置所具有的有益效果,相同之处可参照上文中对方法和装置的解释说明进行理解,在此不赘述。
示例性地,车载***可为整车控制器、驱动***控制器、影音***控制器、辅助驾驶***控制器或车辆中的其他可执行软件程序的装置设备或组成构件,本公开实施例对此不限定。
在一些实施例中,图9为本公开实施例的一种车载***的结构示意图。参照图9,该车载***可包括:存储器402,一个或多个处理器401(图9中以一个处理器401为例);该车载***还可以包括:输入装置403和输出装置404。
其中,该车载***中的处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图9中示例性地以通过总线连接为例示出其连接方式。
其中,存储器402可为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本公开实施例中的提高内存分配速度的内存碎片管理方法对应的程序指令/模块(例如,附图6所示的分配信息获取模块310、碎片化程度指标确定模块320、内存重新分配确定模块330、内存重新分配执行模块340)。处理器401通过运行存储在存储器402中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的内存碎片管理方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。
此外,存储器402可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。
在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置403可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
本实施例中,车载***通过性的进行内存碎片管理,即获取内存地址空间的分配信息;基于所述分配信息,确定内存碎片化程度指标;基于所述内存碎片化程度指标,确定重新进行内存分配;获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务。如此,在改善内存碎片化的问题的同时,利用安全标识实现任务安全保护,有利于在提高内存利用率的同时,降低对任务运行安全性的影响。
在上述实施方式的基础上,本公开实施例还提供了一种车辆,该车辆包括本公开实施例的车载***,车载***中的处理器可通过调用存储器存储的程序或指令,以执行本公开实施例的上述任一种方法的步骤。因此,该车辆中的车载***内存回收速度较快,内存分配速度较快,从而车载***对用户或外界指令的响应速度较快,智能车辆的车载***运行更为顺畅,有利于提高用户体验。
在其他实施方式中,车辆还可包括本领域技术人员可知的其他结构部件或功能部件,本公开实施例对此不赘述也不限定。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种内存碎片管理方法,其特征在于,包括:
获取内存地址空间的分配信息;
基于所述分配信息,确定内存碎片化程度指标;
基于所述内存碎片化程度指标,确定重新进行内存分配;
获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务;
所述安全标识用于区分任务安全边界;在所述安全边界内,不会强行终止当前运行中任务所在进程,而是等安全边界内的进程在所述安全时间内运行完之后,才重启当前运行中任务;
所述基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务包括:
获取所述安全标识关联的代码段,所述代码段为当前运行中任务的至少部分代码;
获取辅助阈值,所述辅助阈值用于保护所述安全标识限定的代码段运行,所述辅助阈值大于碎片化安全阈值;所述碎片化安全阈值用于确定是否需要重新进行内存分配;
若所述内存碎片化程度指标等于或小于所述辅助阈值,且所述当前运行中任务运行于所述代码段内,则继续运行当前运行中任务;
直到确定所述代码段运行结束,重启所述当前运行中任务;
所述安全标识关联任务的重要等级,***实现功能所必须的任务为重要任务,***实现功能不必须的任务为不重要任务;
所述安全标识设置在需要被保护的代码段的两端;
其中,所述内存碎片管理方法适用于应用层面的业务场景,通过业务安全重启进行内存空间的重新分配;
所述基于所述内存碎片化程度指标,确定重新进行内存分配包括:
获取所述碎片化安全阈值;
若所述内存碎片化程度指标大于所述碎片化安全阈值,则确定重新进行内存分配。
2.根据权利要求1所述的方法,其特征在于,所述获取内存地址空间的分配信息包括:
扫描内存地址空间的占用信息;
基于所述占用信息,确定最大连续空闲内存空间的大小和总空闲内存空间的大小。
3.根据权利要求2所述的方法,其特征在于,所述基于所述分配信息,确定内存碎片化程度指标包括:
基于所述最大连续空闲内存空间的大小M和所述总空闲内存空间的大小T,采用f=1-M/T计算所述内存碎片化程度指标f。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述内存碎片化程度指标小于或等于所述碎片化安全阈值,则不重新进行内存分配。
5.根据权利要求1所述的方法,其特征在于,还包括:
若所述内存碎片化程度指标大于所述辅助阈值,则立即重启所述当前运行中任务。
6.根据权利要求1或5所述的方法,其特征在于,还包括:
将当前运行中任务进行重启前的数据备份。
7.一种内存碎片管理装置,其特征在于,包括:
分配信息获取模块,用于获取内存地址空间的分配信息;
碎片化程度指标确定模块,用于基于所述分配信息,确定内存碎片化程度指标;
内存重新分配确定模块,用于基于所述内存碎片化程度指标,确定重新进行内存分配;
内存重新分配执行模块,用于获取当前运行中任务的安全标识,并基于所述安全标识立即重启当前运行中任务或等待安全时间后重启当前运行中任务;
所述安全标识用于区分任务安全边界;在所述安全边界内,不会强行终止当前运行中任务所在进程,而是等安全边界内的进程在所述安全时间内运行完之后,才重启当前运行中任务;
所述内存重新分配执行模块包括:
特征代码段确定子模块,用于获取所述安全标识关联的代码段,所述代码段为当前运行中任务的至少部分代码;
第二阈值获取子模块,用于获取辅助阈值;所述辅助阈值用于保护所述安全标识限定的代码段运行,所述辅助阈值大于碎片化安全阈值;所述碎片化安全阈值用于确定是否需要重新进行内存分配;
当前运行中任务保持子模块,用于若所述内存碎片化程度指标等于或小于所述辅助阈值,且所述当前运行中任务运行于所述代码段内,则继续运行当前运行中任务;
当前运行中任务重启子模块,用于直至确定所述代码段运行结束,重启所述当前运行中任务;
所述安全标识关联任务的重要等级,***实现功能所必须的任务为重要任务,***实现功能不必须的任务为不重要任务;
所述安全标识设置在需要被保护的代码段的两端;
其中,所述内存碎片管理方法适用于应用层面的业务场景,通过业务安全重启进行内存空间的重新分配;
所述内存重新分配确定模块包括:
第一阈值获取子模块,用于获取所述碎片化安全阈值;
分配确定子模块,用于若所述内存碎片化程度指标大于所述碎片化安全阈值,则确定重新进行内存分配。
8.根据权利要求7所述的装置,其特征在于,所述分配信息获取模块包括:
占用信息获取子模块,用于扫描内存地址空间的占用信息;
特征参数确定子模块,用于基于所述占用信息,确定最大连续空闲内存空间的大小和总空闲内存空间的大小。
9.根据权利要求8所述的装置,其特征在于,所述碎片化程度指标确定模块具体用于:基于所述最大连续空闲内存空间的大小M和所述总空闲内存空间的大小T,采用f=1-M/T计算所述内存碎片化程度指标f。
10.一种车载***,其特征在于,包括:
处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1-6任一项所述方法的步骤。
11.一种车辆,其特征在于,包括权利要求10所述的车载***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011186943.XA CN112363828B (zh) | 2020-10-30 | 2020-10-30 | 内存碎片管理方法、装置、车载***及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011186943.XA CN112363828B (zh) | 2020-10-30 | 2020-10-30 | 内存碎片管理方法、装置、车载***及车辆 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112363828A CN112363828A (zh) | 2021-02-12 |
CN112363828B true CN112363828B (zh) | 2024-01-12 |
Family
ID=74513787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011186943.XA Active CN112363828B (zh) | 2020-10-30 | 2020-10-30 | 内存碎片管理方法、装置、车载***及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363828B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741208B (zh) * | 2022-06-13 | 2022-09-23 | 北京智芯微电子科技有限公司 | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 |
CN118069543A (zh) * | 2022-11-22 | 2024-05-24 | 荣耀终端有限公司 | 碎片文件的整理方法、管理器件、闪存存储器件及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899153A (zh) * | 2015-06-04 | 2015-09-09 | 上海卓易科技股份有限公司 | 后台应用清理方法及*** |
CN105975398A (zh) * | 2015-12-07 | 2016-09-28 | 国家电网公司 | 一种内存碎片管理方法 |
CN106708746A (zh) * | 2016-12-30 | 2017-05-24 | 郑州云海信息技术有限公司 | 一种在线内存碎片整理方法和装置 |
CN111506426A (zh) * | 2020-04-17 | 2020-08-07 | 翱捷科技(深圳)有限公司 | 内存管理方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8639900B2 (en) * | 2011-05-25 | 2014-01-28 | International Business Machines Corporation | Defragmentation of data storage pools |
-
2020
- 2020-10-30 CN CN202011186943.XA patent/CN112363828B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899153A (zh) * | 2015-06-04 | 2015-09-09 | 上海卓易科技股份有限公司 | 后台应用清理方法及*** |
CN105975398A (zh) * | 2015-12-07 | 2016-09-28 | 国家电网公司 | 一种内存碎片管理方法 |
CN106708746A (zh) * | 2016-12-30 | 2017-05-24 | 郑州云海信息技术有限公司 | 一种在线内存碎片整理方法和装置 |
CN111506426A (zh) * | 2020-04-17 | 2020-08-07 | 翱捷科技(深圳)有限公司 | 内存管理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112363828A (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10990540B2 (en) | Memory management method and apparatus | |
US20180052711A1 (en) | Method and system for scheduling video analysis tasks | |
CN110532197B (zh) | 内存回收方法及装置、电子设备、存储介质 | |
US20120179823A1 (en) | Computer system, management method of computer resource and program | |
CN112363828B (zh) | 内存碎片管理方法、装置、车载***及车辆 | |
CN104461744A (zh) | 一种资源分配方法及装置 | |
CN112527489A (zh) | 一种任务调度方法、装置、设备及计算机可读存储介质 | |
CN110750336B (zh) | 一种OpenStack虚拟机内存热扩容方法 | |
CN111338779B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN111638953B (zh) | 一种实现gpu虚拟化的方法、装置和存储介质 | |
US8806497B2 (en) | System and method for altering the work definitions in an iterative parallel opportunistic work stealing scheduler | |
CN115617497B (zh) | 线程处理方法、调度组件、监测组件、服务器和存储介质 | |
CN112650541B (zh) | 一种应用程序启动加速方法、***、设备及存储介质 | |
CN106557404B (zh) | 一种应用控制的方法及移动终端 | |
CN112068960A (zh) | 一种cpu资源分配方法、装置、存储介质及设备 | |
CN109660393B (zh) | 一种云主机规格的更新方法及其装置 | |
CN116450328A (zh) | 内存分配方法、装置、计算机设备和存储介质 | |
CN108897603B (zh) | 一种内存资源管理方法和装置 | |
CN110555009B (zh) | 一种网络文件***nfs服务的处理方法及装置 | |
CN112631994A (zh) | 数据迁移方法及*** | |
CN108833532B (zh) | 基于物联网的服务处理方法、装置和*** | |
CN114116230A (zh) | 一种资源管理方法、装置、设备、介质及产品 | |
CN114253663A (zh) | 一种虚拟机资源的调度方法和装置 | |
CN111352710B (zh) | 进程管理方法及装置、计算设备、存储介质 | |
CN115344507A (zh) | 内存分配方法、装置和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |