Brew内存管理问题

xu_puma 2009-08-10 09:32:23
各位好,我在每进入一个应用之前打印当前的内存情况,包括可用内存,可用申请的最大内存块,发现
有可用申请的最大内存块减少,可用使用的内存也减少,可能产生的内存碎片,想请教各位大侠,如何整理
Brew的内存碎片呢?谢谢
...全文
2148 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhygcy 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xu_puma 的回复:]
引用 10 楼 chenmeimei_8899 的回复:
内存减少肯定是内存泄露,内存泄露也不难查,在模拟器或者真机上都可以很开的查出来。
在模拟上进入你要查内存泄露的应用,按挂机键退出,在output windows中就可以看到内存泄露的.c及对应的函数,在真机上用QXDM的用同样的方法也可以看到这些信息。

内存减少肯定不一定是内存泄露的啊,有的是后台应用,第一次进去就减少些,如果后台应用多的话,占用的内存就多,现在我的最大可用内存是3M多,开始申请最大的内存块是2M多,进入一些应用后,内存减少,最后最大申请内存块的只有1M不多了。可是各种跟踪显示无内存泄露!
[/Quote]
有些概念要搞清楚, brewAppManager这个东西是一个进程(Process),那些brew的应用程序只是一个DLL.
在关闭你的程序的时候,你程序分配的内存应该程序本身自觉删除,如果你注册的releasaApp函数没有把自己的内存或者资源删除干净的话,在brewAppManager这个进程没有关闭之前是不会被操作系统回收掉的。
你现在的情况,刚开始3M,进入其他程序之后,在进入你的程序,内存只有2M了,有可能其他的程序正在泄露内存。你可以尝试的情况是重启机器(确保brewAppManager关闭)重新再测试你的可用内存,看看到底是那个应用导致了内存泄露
xu_puma 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chenmeimei_8899 的回复:]
内存减少肯定是内存泄露,内存泄露也不难查,在模拟器或者真机上都可以很开的查出来。
在模拟上进入你要查内存泄露的应用,按挂机键退出,在output windows中就可以看到内存泄露的.c及对应的函数,在真机上用QXDM的用同样的方法也可以看到这些信息。
[/Quote]
内存减少肯定不一定是内存泄露的啊,有的是后台应用,第一次进去就减少些,如果后台应用多的话,占用的内存就多,现在我的最大可用内存是3M多,开始申请最大的内存块是2M多,进入一些应用后,内存减少,最后最大申请内存块的只有1M不多了。可是各种跟踪显示无内存泄露!
FLYUP_CHEN 2009-08-24
  • 打赏
  • 举报
回复
内存减少肯定是内存泄露,内存泄露也不难查,在模拟器或者真机上都可以很开的查出来。
在模拟上进入你要查内存泄露的应用,按挂机键退出,在output windows中就可以看到内存泄露的.c及对应的函数,在真机上用QXDM的用同样的方法也可以看到这些信息。
lhy_hetty 2009-08-23
  • 打赏
  • 举报
回复
打印所有MALLOC的内存地址,调试时注意看
收索bpoint 1看看是哪分配的
alex_goacross 2009-08-21
  • 打赏
  • 举报
回复
内存泄露的问题,在Brew里边是很头疼的。
处理的不好,会造成机器重启,更严重会出现死机的情况。
个人经验:
1。MALLOC,FREE配对使用。
2。接口实例不用记得释放。
3。Extension使用,一定显示的NULL。
4。IDIB,IBitmap使用完记得释放。
  • 打赏
  • 举报
回复
Purify可以帮助查一下内存泄露
  • 打赏
  • 举报
回复
的确如此,要分清内存泄露,内存碎片会由系统处理的
kingfenggg 2009-08-18
  • 打赏
  • 举报
回复
内存减少不是碎片的原因,极可能是内存泄露,注意指针的使用,如果是C的话看一看你的MALLOC与FREE是不是成对出现的,导致动态分配的内存未释放导致内存减少。
liujie1008_cn 2009-08-18
  • 打赏
  • 举报
回复

内存泄露,多查查,积累积累点经验就晓得了
猫腻儿姐姐 2009-08-18
  • 打赏
  • 举报
回复
内存泄露的问题不好查,只能在写代码的时候加倍留心。
不过你可以在程序写好后,不打任何断点,点调试不执行,把代码功能测试一边,然后再输出窗口看有没有内存泄露的信息。
tx040316 2009-08-13
  • 打赏
  • 举报
回复
如果是内存碎片你就不用管,系统会处理,如果是内存泄露的话你就要自己去查了。
hhygcy 2009-08-11
  • 打赏
  • 举报
回复
如果内存减少了 很可能是出现了内存泄露
不知道你现在是用C写的程序还是C++
如果是C++的话,一般会弄重载一下new/delete操作符来侦测一下

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧