当前位置: 首页 > 专利查询>李鹤专利>正文

一种采用分析-反馈-调优模式的内存管理方法及系统技术方案

技术编号:14905756 阅读:91 留言:0更新日期:2017-03-29 20:21
本发明专利技术涉及一种采用分析-反馈-调优模式的内存管理方法,该方法包括以下步骤:步骤1:在配置文件中设置可配置高效内存池的核心参数,将配置文件链接到第三方应用软件;步骤2:运行第三方应用软件;步骤3:运行结束后得到运行期间内存使用分析结果;步骤4:判断该内存使用率是否是最优值,如果不是,根据分析结果反馈调整核心参数,重复步骤2-4;如果是,则该核心参数为最优核心参数,流程结束。本发明专利技术还提出一种实现该方法的内存管理系统。本发明专利技术解决了内存碎片,性能严重下降,以及分配内存缺乏保护机制的问题。

【技术实现步骤摘要】

本专利技术属于计算机内存管理领域,具体涉及一种采用分析-反馈-调优模式的内存管理方法及系统,主要用于对内存使用的优化、排错以及测试。
技术介绍
在计算机内存管理中,主要使用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.解决了分配内存缺乏保护机制,对于内存破坏,内存泄露等常见问题本文档来自技高网
...
一种采用分析-反馈-调优模式的内存管理方法及系统

【技术保护点】
一种采用分析‑反馈‑调优模式的内存管理方法,其特征在于,该方法包括以下步骤:步骤1:在配置文件中设置可配置高效内存池的核心参数,将配置文件链接到第三方应用软件;步骤2:运行第三方应用软件;步骤3:运行结束后得到运行期间内存使用分析结果;步骤4:判断该内存使用率是否是最优值,如果不是,根据分析结果反馈调整核心参数,重复步骤2‑4;如果是,则该核心参数为最优核心参数,流程结束。

【技术特征摘要】
1.一种采用分析-反馈-调优模式的内存管理方法,其特征在于,该方法包括以下步骤:步骤1:在配置文件中设置可配置高效内存池的核心参数,将配置文件链接到第三方应用软件;步骤2:运行第三方应用软件;步骤3:运行结束后得到运行期间内存使用分析结果;步骤4:判断该内存使用率是否是最优值,如果不是,根据分析结果反馈调整核心参数,重复步骤2-4;如果是,则该核心参数为最优核心参数,流程结束。2.如权利要求1所述的内存管理方法,其特征在于,该方法还包括步骤5:在软件运行期间实时检测内存是否被破坏,是否有内存泄漏;如果有,则根据提示找到内存破坏或泄露位置并修改错误;在得到最优核心参数,并且没有内存破坏、没有内存泄漏时,流程结束。3.如权利要求1所述的内存管理方法,其特征在于,所述可配置高效内存池通过使用一系列子内存池的方法来管理不同大小的内存块。4.如权利要求3所述的内存管理方法,其特征在于,该方法还包括步骤6:当进行内存分配时,首先根据分配的内存大小查找相应的内存池,然后从内存池中分配一块内存;当释放内存时,直接将内存块还回对应的内存池。5.如权利要求1所述的内存管理方法,其特征在于,所述内存管理方法所使用的内存管理策略由一个外部配置文件来定义,由一组内存管理策略组成。6.如权利要求2所述的内存管理方法,其特征在于,所述检测内存是否被破坏的具体方法为:为每一块从内存池中分配的内存设置保护字段,从而实时检测内存是否被破坏。7.如权利要求6所述的内存管理方法,其特征在于,在分配的内存块头部和...

【专利技术属性】
技术研发人员:李鹤
申请(专利权)人:李鹤
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1