CN106547617B - 一种采用分析-反馈-调优模式的内存管理方法及系统 - Google Patents
一种采用分析-反馈-调优模式的内存管理方法及系统 Download PDFInfo
- Publication number
- CN106547617B CN106547617B CN201510593906.3A CN201510593906A CN106547617B CN 106547617 B CN106547617 B CN 106547617B CN 201510593906 A CN201510593906 A CN 201510593906A CN 106547617 B CN106547617 B CN 106547617B
- Authority
- CN
- China
- Prior art keywords
- memory
- core parameter
- pool
- analysis
- feedback
- 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
Abstract
本发明涉及一种采用分析‑反馈‑调优模式的内存管理方法,该方法包括以下步骤:步骤1:在配置文件中设置可配置高效内存池的核心参数,将配置文件链接到第三方应用软件;步骤2:运行第三方应用软件;步骤3:运行结束后得到运行期间内存使用分析结果;步骤4:判断该内存使用率是否是最优值,如果不是,根据分析结果反馈调整核心参数,重复步骤2‑4;如果是,则该核心参数为最优核心参数,流程结束。本发明还提出一种实现该方法的内存管理系统。本发明解决了内存碎片,性能严重下降,以及分配内存缺乏保护机制的问题。
Description
技术领域
本发明属于计算机内存管理领域,具体涉及一种采用分析-反馈-调优模式的内存管理方法及系统,主要用于对内存使用的优化、排错以及测试。
背景技术
在计算机内存管理中,主要使用C/C++标准的堆管理算法,但该算法具有两个主要的缺陷:
1.对于大量内存分配、回收效率不高,造成内存碎片,性能严重下降。
操作系统提供的通用内存管理算法的基本原理是将完整的堆内存划分为不同大小的内存块,采用链表结构将这些不同大小的内存块链接在一起。分配内存时,首先需要搜索大小合适的内存块,如果没有大小合适的内存块,就会将较大的内存块拆分出小内存,以满足分配的需要。这种操作方式会导致更多的内存块产生,链表结构的长度不断增加,此时内存的分配效率会下降。同时由于产生了大量的小内存块,导致内存碎片随之产生。当内存碎片多到一定程度,内存分配效率就会大幅下降,大块内存分配失败。虽然通用内存管理算法在内存释放的时候会采用将相邻的小内存块尽量合并的方式减少内存碎片,但是合并算法在复杂的场景下会失效,同时会使得内存使用效率的进一步下降。
分配、释放内存所消耗的时间会随着软件的运行呈线性增长,特别是对于那些对稳定性要求高、频繁进行内存分配和释放的软件,会造成难以解决的问题。例如系统服务软件、网络服务软件、复杂的科学计算程序等等。长时间运行这类软件会造成大量的内存碎片。由于C++/C标准库的内存管理算法中这类内存碎片也是以链的方式组织在一起,因而会大大增加后续内存分配的时间。而且这些内存碎片不是连续的,导致无法继续分配较大尺寸的内存,但实际上此时的系统还有足够的空闲内存。
2.对于分配的内存使用缺乏保护机制,对于内存写越界、非法访问、内存泄露等常见问题没有任何保护措施。
在C/C++中需要程序员自己跟踪所有内存分配和释放操作。任何分配/释放不一致就会导致内存泄漏或系统崩溃。而且由内存写越界、非法访问导致的问题非常难以定位、解决,因此会加大程序员的负担,并且需要程序员具备较高的系统知识水平。通常造成内存破坏的是由于数组或指针写越界。例如数组写越界,对一个临时分配的100字节的数组连续写入了110个字节,这个时候就破坏了最后的10个字节,而这10个字节是另一个数据块的头结构,当另一个数据块被释放的时候就会造成系统崩溃。对于指针写越界会导致更严重的问题,有时指针写越界会随机地破坏一些数据结构而不会导致系统立刻崩溃。但随着软件继续运行会导致一系列后续的内存破坏,最终导致软件数据错误或系统崩溃。而到这个时候已经无法追踪到最原始的破坏的点,也就无法找到问题所在,这是C/C++开发中极难解决的问题,通常会花费程序员大量的时间来试图解决,从而造成整个项目的开发延误。如果在后期二次开发、维护过程中产生此类问题极有可能会导致无法找到和解决问题,最终导致整个软件生命周期缩短。
总之C++/C标准库的内存管理算法中关于大量的内存分配、回收效率不高,且性能非常不稳定。对于分配的内存缺乏保护机制,对于内存破坏,内存泄漏等常见问题没有任何保护措施。
因此,需要研究出通用、高效、具有内存错误准确定位能力的方法来提高复杂软件的运行效率和稳定性,同时能够帮助程序员/测试人员快速发现、定位、解决内存使用相关的错误。
发明内容
本发明提出了一种采用分析-反馈-调优模式的内存管理方法和系统,通过可配置的高效内存池和分配内存的保护机制来解决上述技术问题。
本发明提出的一种采用分析-反馈-调优模式的内存管理方法,该方法包括以下步骤:
步骤1:在配置文件中设置可配置高效内存池的核心参数,将配置文件链接到第三方应用软件;
步骤2:运行第三方应用软件;
步骤3:运行结束后得到运行期间内存使用分析结果;
步骤4:判断该内存使用率是否是最优值,如果不是,根据分析结果反馈调整核心参数,重复步骤2-4;如果是,则该核心参数为最优核心参数,流程结束。
进一步地,该方法还包括步骤5:在软件运行期间实时检测内存是否被破坏,是否有内存泄漏;如果有,则根据提示找到内存破坏或泄露位置并修改错误;在得到最优核心参数,并且没有内存破坏、没有内存泄漏时,流程结束。
进一步地,所述可配置高效内存池通过使用一系列子内存池的方法来管理不同大小的内存块。
进一步地,该方法还包括步骤6:当进行内存分配时,首先根据分配的内存大小查找相应的内存池,然后从内存池中分配一块内存;当释放内存时,直接将内存块还回到对应的内存池。
进一步地,所述内存管理方法所使用的内存管理策略由一个外部配置文件来定义,由一组内存管理策略组成。
进一步地,所述检测内存是否被破坏的具体方法为:为每一块从内存池中分配的内存设置保护字段,从而实时检测内存是否被破坏。
进一步地,在分配的内存块头部和尾部增加检测标记。
进一步地,所述检测是否有内存泄露的方法为:
步骤51:为应用软件源代码中所有分配内存的位置建立内存分配调用点管理数据结构,其中包括软件源代码位置、分配内存次数、分配内存数量;
步骤52:当一个内存块被分配的时候,找到相应的调用点管理数据结构,分配次数加1,分配内存数量加上该内存块大小;
步骤53:当一个内存块被释放的时候,同样找到相应的调用点管理数据结构,分配次数减1,分配内存数量减掉该内存块大小。
步骤54:软件运行结束后,当所有内存分配调用点管理数据结构中的分配内存次数和分配内存数量为0,则没有内存泄露;否则,有内存泄漏,给出相应的应用软件源代码位置、泄漏次数以及泄漏的内存数量。
本发明提出的一种采用分析-反馈-调优模式的内存管理系统,该系统包括:配置模块:在配置文件中设置可配置高效内存池的核心参数,将分析-反馈-调优模式链接到第三方应用软件;运行模块:运行第三方应用软件;分析模块:运行结束后得到运行期内存使用分析结果;反馈模块:根据前述的分析结果反馈调整核心参数;判断模块:判断当前的核心参数是否是最优的核心参数,如果不是最优的核心参数,则调整核心参数后,指示运行模块、分析模块、反馈模块继续工作;如果是,则该当前核心参数为最优参数。
进一步地,该系统还包括检测模块:软件运行期间实时检测内存是否破坏,是否有内存泄漏,如果有则根据提示找到内存泄露位置并修改错误。
本发明的有益效果:
本发明的分析-反馈-调优模式内存管理方法和系统能够大幅度提高应用软件内存分配、释放效率,提高内存的使用效率,进而提高软件的运行效率,增强软件运行的稳定性,提高复杂软件的开发和测试效率,缩短复杂软件开发、测试周期。
1.解决了大量内存分配、回收综合效率不高,造成内存碎片,性能严重下降的问题,具体而言:
本发明采用了可配置的高效内存池来解决这个问题。可定制的高效内存池工作于应用软件和C/C++标准的堆管理算法之间。根据配置预先建立一系列子内存池,每个子内存池负责一定大小的小内存分配,子内存池内部采用时间复杂度为零的栈算法进行高效的内存块管理。高效内存池能够大幅度提高内存的分配、回收效率,而且具有非常高的稳定性。分配、释放内存所消耗的时间与软件运行时间无关,基本呈稳定状态。
由于不同的子内存池处理不同大小的内存分配、释放,因此每个子内存池内管理的内存都是固定大小的,通过栈的方式管理,有效的解决了内存碎片问题,提高内存的使用效率。
2.解决了分配内存缺乏保护机制,对于内存破坏,内存泄露等常见问题没有任何保护措施的问题,具体而言:
可配置高效内存池还提供了分配内存的保护机制,能够及时快速的检测到内存结构破坏,并给出造成内存破坏的源代码相关位置。由于高效内存池监控了所有内存的分配、释放过程,并且在每块内存的开头和结尾处设置特殊检测标记,一旦发行检测标记被破坏就可以立即定位,因此能够非常快速检测到内存写越界或非法访问。
可配置高效内存池会记录所有的内存分配、释放操作,因此可以非常准确的定位内存泄漏并给出内存泄漏的源代码位置,甚至得到软件运行任意时刻的内存使用分布情况,找到内存消耗过高的原因。
3.在解决了C/C++标准的堆管理算法两个主要的缺陷的基础上,本发明还提出了可配置内存池的调优功能,具体而言:
不同的软件对于内存的使用方式具有很大差别,有些软件需要处理大量的不同大小的数据,有些软件则是要处理大量固定大小的数据,因此通常来说一种内存管理算法只能适用于一类软件。而本发明提出的通过分析-反馈-调优模式来进行内存管理的方案能够适用于不同软件,属于通用的内存管理方法。
该方案的主要特点是向使用者开放了内存管理算法的核心数据结构,软件开发者可以通过配置来调整数据结构以及调整内存的分配策略,最后可以获得最佳的内存池配置方案,达到节省内存的效果。
附图说明
图1是本发明的内存管理方法流程图。
图2是本发明的可配置高效内存池结构示意图。
图3是本发明的内存使用统计示例。
图4是本发明的内存破坏报警示例。
图5是本发明的内存泄露报警示例。
图6是本发明的内存分配效率示意图。
图7是本发明的内存使用率示意图。
图8是本发明的内存管理系统示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。但本领域技术人员知晓,本发明并不局限于附图和以下实施例。
本发明提出的一种采用分析-反馈-调优模式的内存管理方法,该方法中使用的分析-反馈-调优模式内存管理算法以独立模块(动态库)的方式提供,将这个动态库和第三方被测或被优化软件链接到一起,即可以使用分析-反馈-调优模式内存管理算法。
如附图1所示,本发明的内存管理方法包括以下步骤:
步骤1.在配置文件中设置可配置高效内存池的核心参数,将分析-反馈-调优模式链接到第三方应用软件。例如:
步骤2.运行第三方应用软件。
步骤3.运行结束后得到运行期内存使用分析结果。
步骤4.根据分析结果反馈调整核心参数。
步骤5.重复步骤2-4得到最优的核心参数(较高的内存利用率)。
步骤6.软件运行期间实时检测内存是否破坏,是否有内存泄漏。如果有则根据提示找到内存泄露位置并修改错误。
步骤7.最终得到最优核心参数,并且没有内存破坏、没有内存泄漏,结束。
分析-反馈-调优模式算法(EMM)的核心算法是可配置的内存池算法,在可配置的内存池基础上实现了内存使用优化、内存访问保护、内存泄漏检测等所有功能。可配置的内存池算法使用一系列子内存池的方法来管理不同大小的内存块,如图2所示。EMM内存管理的最小单位是块(block),多个相同大小的块组成一个连续的内存区,称为盒(box),多个盒构成一个内存池(pool),EMM则管理多个不同大小的内存池。
当进行内存分配时,EMM首先根据分配的内存大小查找相应的内存池,然后从内存池中分配一块内存,当释放内存时,直接将内存块还回对应的内存池,这样由于是从已分配的内存池中分配/回收内存块,避免了系统内存分配、释放的开销,内存分配、释放的速度极快;并且由于将不同大小的内存分配都集中在内存盒和内存池中,从而避免了内存碎片。另外,内存盒和内存池是随应用软件内存使用量的变化动态增长和收缩,提高了内存使用效率。同时该结构也是进行内存泄漏和越界检测的基础。
整个EMM的内存管理策略由一个外部配置文件来定义,由一组内存管理策略组成。不同的应用场景可以定制不同的管理策略。例如定义内存管理策略组如下:
具体含义为:
1.内存管理器定义了5个策略。每个策略管理的内存大小分布为:1~64字节、65~128字节、129~512字节、513~2048字节、2049~4096字节;内存管理器管理的最大内存块大小为4096字节,超出这一大小的内存分配转由系统内存分配函数处理。
2.对于第一个策略的32位系统来说,管理1-64字节的内存分配。将会被划分为8个pool来进行具体的管理。具体计算方法如下:
pool数量=(nSection-last nSection)/nSectionInterval
=(64-0)/8=8
8个pool具体管理(1~8)、(9~16)、(17~24)、(25~32)、(33~40)、(41~48)、(49~56)、(57~64)字节的内存块分配。
如果pool中没有空闲内存块,那么pool将实际分配一个盒(box),每个盒(box)中有nBlkNum(1024)个内存块可供分配。
3.其它策略同理。
在软件运行期间,如果没有对应大小的内存块分配请求,那么对应的pool也不会真正申请内存,避免了内存的浪费。在软件运行结束后ExMemMgr会给出完整的内存使用统计信息,见图3。
1.Pool[0](第1个pool)管理0~8字节内存块分配,最多同时分配了4(MaxUsedBlkCount)个内存块。占(4*8)=32(MaxUsedBlkSize)字节。最多同时分配了1(MaxExistBoxCount)个盒(box),实际占用了24596字节。最后这个内存池的使用效率为32/24596=0%。内存使用率低。
2.Pool[46](第47个pool)管理897~960字节内存块分配,最多同时分配了0(MaxUsedBlkCount)个内存块。占0(MaxUsedBlkSize)字节。最多同时分配了0(MaxExistBoxCount)个盒(box),实际占用了0字节。最后这个内存池没有被使用。
3.Pool[47](第47个pool)管理960~1024字节内存块分配,最多同时分配了5010(MaxUsedBlkCount)个内存块。占(5010*1024)=5130240(MaxUsedBlkSize)字节。最多同时分配了20(MaxExistBoxCount)个盒(box),实际占用了5325200字节。最后这个内存池的使用效率为5130240/5325200=96%。内存使用率很高。
从上面的分析可以得出结论,Pool[0](0~8字节)的分配请求很少,最多同时只有4个,但每个盒(Box)含有1024个内存块,导致内存浪费,需要调整相对应Pool的内存管理策略。其它不需要调整。
调整的方法很灵活,有三个:
1.直接为0~8字节内存块分配增加一个策略,例如:
mempool_0=8 8 4
2.直接调整策略1,由{64,sizeof(int)*2,1024},改为
mempool_1=64 8 4
调整后的配置如下:
再次运行可以得到Pool[0]大于95%的内存使用效率。
每次软件运行时,分析-反馈-调优内存管理算法会实时分析内存的使用情况。运行结束时,该管理算法会反馈整个运行期间内存的使用情况以及各种细节并生成一个结果文件。然后使用者根据反馈重新调整核心数据结构来进一步优化内存使用。整个过程可以被重复进行几次,最终得到一个最优的结果。通过上述定制内存管理策略的方法,可以适用于各类不同的软件。
分析-反馈-调优模式内存保护机制:
基于可配置高效内存池,分析-反馈-调优内存管理算法对于每一块从内存池中分配的内存都会设置特殊的保护字段随时检测内存是否被破坏。具体方法是在分配的数据块头部和尾部增加了一个特殊的检测标记。检测标记占用的内存不属于应用软件,因此永远不应该被改变,一旦应用软件发生写越界错误,通常情况下这个标记会被改写,一旦发现标记被破坏将立即报警。分析-反馈-调优内存管理算法在分配每一个数据块的同时会记录该内存块被分配的应用软件源码位置、以及检测到内存破坏的应用软件源码位置,作为提供给软件人员排除错误的关键信息,输出结果如图4。其中第一个是主动检测报警,一个8字节大小的内存块被破坏,同时给出了内存分配和错误检测点的应用软件源码位置。第二个是被动检测报警,一个256字节大小的内存块被破坏,同时给出了内存分配和错误检测点的应用软件源码位置。
可以通过两种方法检测内存破坏:
1.被动检测:当内存块被释放的时候自动检测。
2.主动检测:分析-反馈-调优内存管理算法提供专用的函数,可以在任意位置主动进行检测。
bool BoundaryCheckForMem(void*p)
分析-反馈-调优模式内存泄漏检测:
对于每一块从可配置内存池中分配的内存,分析-反馈-调优内存管理算法会记录其大小、调用次数、应用软件源代码中所有分配内存的位置,以及这些内存是否被释放。当程序结束或主动调用内存泄漏检测函数时如果有分配点的内存数量不为0则给出内存泄漏报警。具体流程如下:
1.为应用软件源代码中所有分配内存的位置建立内存分配调用点管理数据结构,其中包括软件源代码位置、分配内存次数、分配内存数量。
2.当一个内存块被分配的时候,找到相应的调用点管理数据结构,分配次数加1,分配内存数量加上该内存块大小。
3.当一个内存块被释放的时候,同样找到相应的调用点管理数据结构,分配次数减1,分配内存数量减掉该内存块大小。
4.最终所有内存分配调用点管理数据结构中的分配内存次数和分配内存数量应该为0。否则发现内存泄漏,给出相应的应用软件源代码位置、泄漏次数以及泄漏的内存数量。
结果如图5。其中第一个泄漏报警指出应用软件源码文件exmemmgrprj.cpp第70行内存泄漏了10次,共泄漏10400字节。第一个泄漏报警以调用栈的形式指出应用软件源码文件exmemmgrprj.cpp第73行内存泄漏了1次,共泄漏80字节。
可以通过两种方法检测内存泄露:
1.被动检测:当应用软件结束时候自动检测。
2.主动方式:分析-反馈-调优内存管理算法提供专用的函数,可以在任意位置主动进行检测。
void ExDetectMemLeak()
本发明采用了可配置的高效内存池来解决大量内存分配、回收综合效率不高,造成内存碎片,性能严重下降的问题。可定制的高效内存池工作于应用软件和C/C++标准的堆管理算法之间。根据配置预先建立一系列子内存池,每个子内存池负责一定大小的小内存分配,子内存池内部采用时间复杂度为零的栈算法进行高效的内存块管理。高效内存池能够大幅度提高内存的分配、回收效率,而且具有非常高的稳定性。分配、释放内存所消耗的时间与软件运行时间无关,基本呈稳定状态。参考附图6。
由于不同的子内存池处理不同大小的内存分配、释放,因此每个子内存池内管理的内存都是固定大小的,通过栈的方式管理,有效的解决了内存碎片问题,提高内存的使用效率,参考附图7。
本发明还提出一种采用分析-反馈-调优模式的内存管理系统,如图8所示。该系统包括:配置模块801:在配置文件中设置可配置高效内存池的核心参数,将分析-反馈-调优模式链接到第三方应用软件;运行模块802:运行第三方应用软件;分析模块803:运行结束后得到运行期内存使用分析结果;反馈模块804:根据前述的分析结果反馈调整核心参数;判断模块805:判断当前的核心参数是否是最优的核心参数,如果不是最优的核心参数,则调整核心参数后,指示运行模块802、分析模块803、反馈模块804继续工作;如果是,则该当前核心参数为最优参数;检测模块806:软件运行期间实时检测内存是否破坏,是否有内存泄漏,如果有则根据提示找到内存泄露位置并修改错误。其他内容与前述方法相同,不再赘述。
以上,对本发明的实施方式进行了说明。但是,本发明不限定于上述实施方式。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种采用分析-反馈-调优模式的内存管理方法,其特征在于,该方法包括以下步骤:
步骤1:在配置文件中设置可配置高效内存池的核心参数,将配置文件链接到第三方应用软件;
步骤2:运行第三方应用软件,实时分析内存的使用情况;
步骤3:运行结束后,基于所述实时分析的内存的使用情况,得到运行期间内存使用分析结果;
步骤4:判断该内存使用率是否是最优值,如果不是,根据分析结果反馈调整核心参数,重复步骤2-4;如果是,则该核心参数为最优核心参数;
步骤5:在软件运行期间实时检测内存是否被破坏,是否有内存泄漏;如果有内存被破坏,则根据提示找到内存破坏位置并修改错误,如果有内存泄漏,则根据提示找到内存泄露位置并修改错误;在得到最优核心参数,并且没有内存破坏和没有内存泄漏时,流程结束;
所述检测是否有内存泄露的方法包括:
步骤51:为应用软件源代码中所有分配内存的位置建立内存分配调用点管理数据结构,其中包括软件源代码位置、分配内存次数和分配内存数量;
步骤52:当一个内存块被分配的时候,找到相应的调用点管理数据结构,分配次数加1,分配内存数量加上该内存块大小;
步骤53:当一个内存块被释放的时候,同样找到相应的调用点管理数据结构,分配次数减1,分配内存数量减掉该内存块大小;
步骤54:软件运行结束后,当所有内存分配调用点管理数据结构中的分配内存次数和分配内存数量为0,则没有内存泄露;否则,有内存泄漏,给出相应的应用软件源代码位置、泄漏次数以及泄漏的内存数量。
2.如权利要求1所述的内存管理方法,其特征在于,所述可配置高效内存池通过使用一系列子内存池的方法来管理不同大小的内存块。
3.如权利要求2所述的内存管理方法,其特征在于,该方法还包括步骤6:当进行内存分配时,首先根据分配的内存大小查找相应的内存池,然后从内存池中分配一块内存;当释放内存时,直接将内存块还回对应的内存池。
4.如权利要求1所述的内存管理方法,其特征在于,所述内存管理方法所使用的内存管理策略由一个外部配置文件来定义,由一组内存管理策略组成。
5.如权利要求1所述的内存管理方法,其特征在于,所述检测内存是否被破坏的具体方法为:为每一块从内存池中分配的内存设置保护字段,从而实时检测内存是否被破坏。
6.如权利要求5所述的内存管理方法,其特征在于,在分配的内存块头部和尾部增加检测标记。
7.如权利要求1所述的内存管理方法,其特征在于,其中,所述方法中最大内存块大小为4096字节。
8.一种实现如权利要求1-7中任一项所述的方法的内存管理系统,其特征在于,该系统包括:
配置模块:在配置文件中设置可配置高效内存池的核心参数,将分析-反馈-调优模式链接到第三方应用软件;
运行模块:运行第三方应用软件;分析模块:运行结束后得到运行期内存使用分析结果;
反馈模块:根据前述的分析结果反馈调整核心参数;
判断模块:判断当前的核心参数是否是最优的核心参数,如果不是最优的核心参数,则调整核心参数后,指示运行模块、分析模块和反馈模块继续工作;如果是,则该当前核心参数为最优参数;
检测模块:在软件运行期间实时检测内存是否被破坏,是否有内存泄漏,如果有内存被破坏,则根据提示找到内存破坏位置并修改错误,如果有内存泄漏,则根据提示找到内存泄露位置并修改错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510593906.3A CN106547617B (zh) | 2015-09-18 | 2015-09-18 | 一种采用分析-反馈-调优模式的内存管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510593906.3A CN106547617B (zh) | 2015-09-18 | 2015-09-18 | 一种采用分析-反馈-调优模式的内存管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106547617A CN106547617A (zh) | 2017-03-29 |
CN106547617B true CN106547617B (zh) | 2019-10-01 |
Family
ID=58362161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510593906.3A Active CN106547617B (zh) | 2015-09-18 | 2015-09-18 | 一种采用分析-反馈-调优模式的内存管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547617B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984295B (zh) * | 2018-06-19 | 2020-08-07 | 珠海全志科技股份有限公司 | 内存回收方法、计算机装置及计算机可读存储介质 |
CN113220604B (zh) * | 2021-05-31 | 2021-12-07 | 深圳华云信息系统有限公司 | 内存申请方法、装置、电子设备和计算机可读存储介质 |
CN113485835B (zh) * | 2021-07-14 | 2022-04-22 | 深圳大趋智能科技有限公司 | 一种多场景下共享内存的实现方法、系统、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110044A (zh) * | 2007-08-28 | 2008-01-23 | 中兴通讯股份有限公司 | 一种内存监控管理的方法及系统 |
CN102567107A (zh) * | 2011-10-31 | 2012-07-11 | 广东电网公司电力科学研究院 | 高并行的实时内存资源管理调度方法 |
-
2015
- 2015-09-18 CN CN201510593906.3A patent/CN106547617B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110044A (zh) * | 2007-08-28 | 2008-01-23 | 中兴通讯股份有限公司 | 一种内存监控管理的方法及系统 |
CN102567107A (zh) * | 2011-10-31 | 2012-07-11 | 广东电网公司电力科学研究院 | 高并行的实时内存资源管理调度方法 |
Non-Patent Citations (1)
Title |
---|
支持内存错误检测的改进gdb;刘业;《中国优秀硕士学位论文全文数据库信息科技辑2012年》;20121015(第10期);第39-43页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106547617A (zh) | 2017-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yoo et al. | Clustering test cases to achieve effective and scalable prioritisation incorporating expert knowledge | |
CN106547617B (zh) | 一种采用分析-反馈-调优模式的内存管理方法及系统 | |
WO2016197768A1 (zh) | 芯片验证方法、装置及系统 | |
CN107085548A (zh) | 一种监控应用程序内存的方法、装置及电子设备 | |
US8484623B2 (en) | Efficient program instrumentation | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN108737213B (zh) | 一种基于fpga的高并行大吞吐量渗透测试系统及方法 | |
US7603659B2 (en) | Activating assertions and breakpoints | |
US8739145B2 (en) | Super nested block method to minimize coverage testing overhead | |
CN108920139B (zh) | 一种程序生成方法、装置、系统、电子设备及存储介质 | |
CN103927305B (zh) | 一种对内存溢出进行控制的方法和设备 | |
Mateo et al. | Mutation at system and functional levels | |
CN107547261A (zh) | 云平台性能测试方法及装置 | |
US8141082B2 (en) | Node-based representation of multi-threaded computing environment tasks, and node-based data race evaluation | |
CN103617120A (zh) | 一种单元测试方法和装置 | |
CN112511596A (zh) | 一种云平台中创建云资源的方法和设备 | |
King et al. | Towards self-testing in autonomic computing systems | |
US20170083426A1 (en) | Memory management tools | |
Di Nardo et al. | Generating complex and faulty test data through model-based mutation analysis | |
CN103049374B (zh) | 一种自动化测试的方法及装置 | |
CN109542444A (zh) | Java应用的监控方法、装置、服务器和存储介质 | |
CN114116197A (zh) | 可编程逻辑器件及其内存管理系统 | |
CN116467204A (zh) | 一种低代码应用运行稳定性优化方法 | |
CN111767205A (zh) | 一种支持任务拆分的在线检测方法及系统 | |
CN106295808A (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 |