您的位置:首页 > 其它

nokia 6681内存问题及解决办法

2007-10-11 17:09 316 查看
昨天做真机测试,在nokia 3230上完全OK的程序,移植到6681上,截图并上传3-5次之后必然卡在截图位置,百思不得其解。
按理说,6681用的是s60 FP2的,比3230的s60 FP1的系统要高一档,至少应该不会比3230要差吧。结果倒好,反过来了,nokia啊。。。。。。


今一直在debug,偶然间想起了appman,忽然想查下内存使用情况。一查,好了,本来空闲1M的内存现在只剩30K+,瀑布汗(声明啊,我没乱分配空间,所有不用的类跟数组,都null了,否则在3230上就该有这问题了)


说内存泄漏吧,我们调用下system.gc,让KVM来清理一下,应该没问题了吧。结果,在emulator上,KVM能做的很好,200K的虚拟内存,程序始终保持在40K+的位置。移植到6681,问题依旧,结论是:6681并没有调用GC,无论在内存多小的情况下。

GOOGLE/baidu也搜了很多文章,比较合理的解释是:6681的内存较小,且KVM功能有欠缺,内存管理能力不足。

不说废话了,就算KVM有问题,俺们PG也得硬着头皮把东西做起来



对于新建类,比如线程,尽量进行重用,运用wait和notify,不要每次都新建一个类,用完在设null。后者在其他机型上可以进行(虽然效率不高),但在6681绝对不行,等你重建了3-7次之后,等着当机吧~~~


对于图片,也不能每次都重载, 判断下在创建永远是明智的,网上也有很多图片优化的就不说了。

  if(imgs == null)
imgs = new Image[GameData.imgName.length];
  声效类,WAV/MIDI/OTT,都可以,推荐顺序是ott>midi>wav,原因不用讲了吧(大小)?

多的想不起了,总结下就一句,要在nokia机器上运行的j2me程序,绝对不要相信WTK模拟器的结果!!!一定要在目标机型的真机上挨个试遍,否则就等着哭吧~~


附上几个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: