一 简介 程序运行中经常出现内存泄露或者内存碎片问题,导致内存申请不到,出现各种异常。 二 ecos 内存申请的机制• 目前ecos kernel 使用内存是使用的分配算法是最坏适应(Worst Fit)算法:又称最大适应(Largest Fit)算法,空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是挑选出最大的分区。,这样做好处就是分配内存快,坏处就是极容易产生碎片。 三 内存泄露 内存泄露主要是由于申请memory 没有释放,导致可以的memory 越来越少,最终申请不到memory 。 四 内存碎片内存碎片大部分是由于申请和释放的顺序不对引起的。内存泄露也一定会造成内存碎片。一般申请memory要遵循先申请后释放原则,即如下顺序: 申请A 申请B 申请C 释放C 释放B 释放A 如下操作就会产生碎片:
申请A 申请B 申请C 释放B 释放A 申请A 申请B 释放C 五 内存泄露与内存碎片的判定. 如何在HB 上判断是否有内存泄露或者是内存碎片。 一般内存泄露或者内存碎片发生在某一个应用上,判定某一个应用是否存在内存泄露或者内存碎片,就是在进入这个应用和退出这个应用的地方把吗memory的使用情况打印出来,进行判定。 六 内存泄露和内存碎片的解决方式。因为HB 现有做相应的内存检测机制,遇到内存泄露和内存碎片后,可以进行debug,能通过跟流程,将申请memory 和释放memory 的地方加打印,根据内存泄露和内存碎片的形成原理去定位问题。 |