wujunxian 发表于 2016-6-3 12:50:29

内存泄露和内存碎片

一 简介程序运行中经常出现内存泄露或者内存碎片问题,导致内存申请不到,出现各种异常。二 ecos 内存申请的机制•   目前ecos kernel 使用内存是使用的分配算法是最坏适应(WorstFit)算法:又称最大适应(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 的地方加打印,根据内存泄露和内存碎片的形成原理去定位问题。

lailiuming 发表于 2016-6-3 14:47:59

:handshake:handshake:handshake:handshake
页: [1]
查看完整版本: 内存泄露和内存碎片