搜索
 找回密码
 立即注册

简单一步 , 微信登陆

内存泄露和内存碎片

作者:wujunxian | 时间:2016-6-3 12:50:29 | 阅读:1860| 显示全部楼层
简介
程序运行中经常出现内存泄露或者内存碎片问题,导致内存申请不到,出现各种异常。
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 的地方加打印,根据内存泄露和内存碎片的形成原理去定位问题。
回复

使用道具 举报

大神点评1

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版