当前位置:编程学习 > wap >>

Brew内存管理问题

各位好,我在每进入一个应用之前打印当前的内存情况,包括可用内存,可用申请的最大内存块,发现
有可用申请的最大内存块减少,可用使用的内存也减少,可能产生的内存碎片,想请教各位大侠,如何整理
Brew的内存碎片呢?谢谢 --------------------编程问答-------------------- 如果内存减少了 很可能是出现了内存泄露
不知道你现在是用C写的程序还是C++
如果是C++的话,一般会弄重载一下new/delete操作符来侦测一下 --------------------编程问答-------------------- 如果是内存碎片你就不用管,系统会处理,如果是内存泄露的话你就要自己去查了。 --------------------编程问答-------------------- 内存减少不是碎片的原因,极可能是内存泄露,注意指针的使用,如果是C的话看一看你的MALLOC与FREE是不是成对出现的,导致动态分配的内存未释放导致内存减少。 --------------------编程问答-------------------- 的确如此,要分清内存泄露,内存碎片会由系统处理的 --------------------编程问答-------------------- 内存泄露的问题不好查,只能在写代码的时候加倍留心。
不过你可以在程序写好后,不打任何断点,点调试不执行,把代码功能测试一边,然后再输出窗口看有没有内存泄露的信息。
--------------------编程问答--------------------
内存泄露,多查查,积累积累点经验就晓得了 --------------------编程问答-------------------- Purify可以帮助查一下内存泄露 --------------------编程问答-------------------- 内存泄露的问题,在Brew里边是很头疼的。
处理的不好,会造成机器重启,更严重会出现死机的情况。
个人经验:
1。MALLOC,FREE配对使用。
2。接口实例不用记得释放。
3。Extension使用,一定显示的NULL。
4。IDIB,IBitmap使用完记得释放。 --------------------编程问答-------------------- 打印所有MALLOC的内存地址,调试时注意看
收索bpoint 1看看是哪分配的 --------------------编程问答-------------------- 内存减少肯定是内存泄露,内存泄露也不难查,在模拟器或者真机上都可以很开的查出来。
在模拟上进入你要查内存泄露的应用,按挂机键退出,在output windows中就可以看到内存泄露的.c及对应的函数,在真机上用QXDM的用同样的方法也可以看到这些信息。 --------------------编程问答--------------------
引用 10 楼 chenmeimei_8899 的回复:
内存减少肯定是内存泄露,内存泄露也不难查,在模拟器或者真机上都可以很开的查出来。
在模拟上进入你要查内存泄露的应用,按挂机键退出,在output windows中就可以看到内存泄露的.c及对应的函数,在真机上用QXDM的用同样的方法也可以看到这些信息。

内存减少肯定不一定是内存泄露的啊,有的是后台应用,第一次进去就减少些,如果后台应用多的话,占用的内存就多,现在我的最大可用内存是3M多,开始申请最大的内存块是2M多,进入一些应用后,内存减少,最后最大申请内存块的只有1M不多了。可是各种跟踪显示无内存泄露! --------------------编程问答--------------------
引用 11 楼 xu_puma 的回复:
引用 10 楼 chenmeimei_8899 的回复:
 内存减少肯定是内存泄露,内存泄露也不难查,在模拟器或者真机上都可以很开的查出来。
 在模拟上进入你要查内存泄露的应用,按挂机键退出,在output windows中就可以看到内存泄露的.c及对应的函数,在真机上用QXDM的用同样的方法也可以看到这些信息。

 内存减少肯定不一定是内存泄露的啊,有的是后台应用,第一次进去就减少些,如果后台应用多的话,占用的内存就多,现在我的最大可用内存是3M多,开始申请最大的内存块是2M多,进入一些应用后,内存减少,最后最大申请内存块的只有1M不多了。可是各种跟踪显示无内存泄露!

有些概念要搞清楚, brewAppManager这个东西是一个进程(Process),那些brew的应用程序只是一个DLL.
在关闭你的程序的时候,你程序分配的内存应该程序本身自觉删除,如果你注册的releasaApp函数没有把自己的内存或者资源删除干净的话,在brewAppManager这个进程没有关闭之前是不会被操作系统回收掉的。
你现在的情况,刚开始3M,进入其他程序之后,在进入你的程序,内存只有2M了,有可能其他的程序正在泄露内存。你可以尝试的情况是重启机器(确保brewAppManager关闭)重新再测试你的可用内存,看看到底是那个应用导致了内存泄露
补充:移动开发 ,  Brew
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,