nokia 6681内存问题及解决办法
2007-10-11 17:09
316 查看
昨天做真机测试,在nokia 3230上完全OK的程序,移植到6681上,截图并上传3-5次之后必然卡在截图位置,百思不得其解。
按理说,6681用的是s60 FP2的,比3230的s60 FP1的系统要高一档,至少应该不会比3230要差吧。结果倒好,反过来了,nokia啊。。。。。。
![](http://static.xiaonei.com/img/editor/emot/emot-23.gif)
今一直在debug,偶然间想起了appman,忽然想查下内存使用情况。一查,好了,本来空闲1M的内存现在只剩30K+,瀑布汗(声明啊,我没乱分配空间,所有不用的类跟数组,都null了,否则在3230上就该有这问题了)
![](http://static.xiaonei.com/img/editor/emot/emot-02.gif)
说内存泄漏吧,我们调用下system.gc,让KVM来清理一下,应该没问题了吧。结果,在emulator上,KVM能做的很好,200K的虚拟内存,程序始终保持在40K+的位置。移植到6681,问题依旧,结论是:6681并没有调用GC,无论在内存多小的情况下。
GOOGLE/baidu也搜了很多文章,比较合理的解释是:6681的内存较小,且KVM功能有欠缺,内存管理能力不足。
不说废话了,就算KVM有问题,俺们PG也得硬着头皮把东西做起来
![](http://static.xiaonei.com/img/editor/emot/emot-30.gif)
。
对于新建类,比如线程,尽量进行重用,运用wait和notify,不要每次都新建一个类,用完在设null。后者在其他机型上可以进行(虽然效率不高),但在6681绝对不行,等你重建了3-7次之后,等着当机吧~~~
![](http://static.xiaonei.com/img/editor/emot/emot-15.gif)
对于图片,也不能每次都重载, 判断下在创建永远是明智的,网上也有很多图片优化的就不说了。
if(imgs == null)
imgs = new Image[GameData.imgName.length];
声效类,WAV/MIDI/OTT,都可以,推荐顺序是ott>midi>wav,原因不用讲了吧(大小)?
多的想不起了,总结下就一句,要在nokia机器上运行的j2me程序,绝对不要相信WTK模拟器的结果!!!一定要在目标机型的真机上挨个试遍,否则就等着哭吧~~
![](http://static.xiaonei.com/img/editor/emot/emot-15.gif)
附上几个6681相关discussion的网址,仍被它折磨着的同志们看看吧:
http://www2.matrix.org.cn/thread.shtml?topicId=30649&forumId=4&fid=4
http://www.j2medev.com/bbs/dispbbs.asp?boardid=11&id=7240
http://j2medev.spaces.live.com/blog/cns!8D09CFF9FE06ED5D!978.entry
按理说,6681用的是s60 FP2的,比3230的s60 FP1的系统要高一档,至少应该不会比3230要差吧。结果倒好,反过来了,nokia啊。。。。。。
![](http://static.xiaonei.com/img/editor/emot/emot-23.gif)
今一直在debug,偶然间想起了appman,忽然想查下内存使用情况。一查,好了,本来空闲1M的内存现在只剩30K+,瀑布汗(声明啊,我没乱分配空间,所有不用的类跟数组,都null了,否则在3230上就该有这问题了)
![](http://static.xiaonei.com/img/editor/emot/emot-02.gif)
说内存泄漏吧,我们调用下system.gc,让KVM来清理一下,应该没问题了吧。结果,在emulator上,KVM能做的很好,200K的虚拟内存,程序始终保持在40K+的位置。移植到6681,问题依旧,结论是:6681并没有调用GC,无论在内存多小的情况下。
GOOGLE/baidu也搜了很多文章,比较合理的解释是:6681的内存较小,且KVM功能有欠缺,内存管理能力不足。
不说废话了,就算KVM有问题,俺们PG也得硬着头皮把东西做起来
![](http://static.xiaonei.com/img/editor/emot/emot-30.gif)
。
对于新建类,比如线程,尽量进行重用,运用wait和notify,不要每次都新建一个类,用完在设null。后者在其他机型上可以进行(虽然效率不高),但在6681绝对不行,等你重建了3-7次之后,等着当机吧~~~
![](http://static.xiaonei.com/img/editor/emot/emot-15.gif)
对于图片,也不能每次都重载, 判断下在创建永远是明智的,网上也有很多图片优化的就不说了。
if(imgs == null)
imgs = new Image[GameData.imgName.length];
声效类,WAV/MIDI/OTT,都可以,推荐顺序是ott>midi>wav,原因不用讲了吧(大小)?
多的想不起了,总结下就一句,要在nokia机器上运行的j2me程序,绝对不要相信WTK模拟器的结果!!!一定要在目标机型的真机上挨个试遍,否则就等着哭吧~~
![](http://static.xiaonei.com/img/editor/emot/emot-15.gif)
附上几个6681相关discussion的网址,仍被它折磨着的同志们看看吧:
http://www2.matrix.org.cn/thread.shtml?topicId=30649&forumId=4&fid=4
http://www.j2medev.com/bbs/dispbbs.asp?boardid=11&id=7240
http://j2medev.spaces.live.com/blog/cns!8D09CFF9FE06ED5D!978.entry
相关文章推荐
- QT中使用槽函数来关闭窗口,导致内存泄露的问题以及解决办法
- popen内存不足问题解决办法
- TSVNCache狂占内存导致诸多问题的解决办法
- 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档 问题的一种解决办法
- 图片轮播器占用内存过大问题的解决办法
- 【转】内存不能为read/written 问题的简单解决办法
- Oracle调整内存超出限制出现ORA-27100: shared memory realm already exists问题解决办法
- 关于jvm的内存限制的问题的解决办法
- IE内存错误,地址内存错误问题搜集和解决办法搜集 (逐步完善)
- 内存不能为read/written 问题的简单解决办法
- Ubuntu 32bit 4GB 内存问题和解决办法
- 解决js函数闭包内存泄露问题的办法
- Ubuntu 32bit 4GB 内存问题和解决办法
- memset导致的内存泄露问题的解决办法
- Oracle调整内存超出限制出现ORA-27100: shared memory realm already exists问题解决办法
- hadoop编程遇到的jvm问题为内存不够的解决办法
- 64位Windows7系统中Svchost占用内存跟CPU过高的问题解决办法
- Ubuntu 32bit 4GB 内存问题和解决办法
- Android——内存篇:Android中5种最常见的内存泄漏问题以及解决办法
- opencv中图像连续显示的内存泄露问题的解决办法