SuperIC社区_
标题: 内存泄露和内存碎片 [打印本页]
作者: wujunxian 时间: 2016-6-3 12:50
标题: 内存泄露和内存碎片
一 简介程序运行中经常出现内存泄露或者内存碎片问题,导致内存申请不到,出现各种异常。
二 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 的地方加打印,根据内存泄露和内存碎片的形成原理去定位问题。
作者: lailiuming 时间: 2016-6-3 14:47



欢迎光临 SuperIC社区_ (/) |
Powered by Discuz! X3.3 |