MyException - 我的异常网
当前位置:我的异常网» J2ME » 谈谈J2ME解决手机Game的内存有关问题

谈谈J2ME解决手机Game的内存有关问题

www.MyException.Cn  网友分享于:2013-01-29  浏览:1次
谈谈J2ME解决手机Game的内存问题
你可能想,为什么要谈内存,我们可爱的Java不是有gc机制吗?可惜我们现在不是在pc上,而是只有64k内存的手机。如果不多加小心谨慎的话,我们的gc很可能每十秒钟运行一次呢。你会不会毫不犹豫地写下这样的代码:

代码:
--------------------------------------------

1.  
g.drawString(“score=”+score,50,50,Graphics.TOP|Graphics。LEFT);

JAVA手机网[www.cnjm.net]  或是
JAVA手机网[www.cnjm.net]2.
JAVA手机网[www.cnjm.net]for   (Enumeration   e   =   v.elements()   ;   e.hasMoreElements()   ;)   {
  System.out.println(e.nextElement());
}
 
 
JAVA手机网[www.cnjm.net]    

有什么问题?其实它做了下面的事:  

代码:
--------------------------------------------

String   scoreStr=“score=”+score;
g.drawString(scoreStr,50,50,Graphics.TOP|Graphics.LEFT);
JAVA手机网[www.cnjm.net]  
 

JAVA手机网[www.cnjm.net]


明白了吗?在你的J2ME游戏里,这行程序很可能在paint()里面出现并且每0.1秒运行一次吧。伴随着时间的推移,成堆的String被创建出来,要不了多久,我们可爱的gc妈妈就要出来喽。想到了就简单了,根据我们midlet的实际情况,让我们灵活地建立解决de方法。  

差不多也发生了同样的事情,注意到interface   Enumeration只有两个method:  
JAVA手机网[www.cnjm.net]

boolean   hasMoreElement();
Object   nextElement();

发现了什么?Enumeration不像STL的iterator,没法让一个原有的Enumeration从头开始,每遍历一次我们的Vector或Hashtable,我们就得问我们的容器要一个新的Enumeration。  

JAVA手机网[www.cnjm.net]常见的情况是:  

碰撞检测。我们不得不在每一个frame里对容器做遍历,其结果就是生出以集装箱为单位的大把Enumeration,使用Enumeration很酷,不过为了内存,我们还是老土一点:  

代码:
--------------------------------------------

for   (int   loop,   n   =   vector.size();   loop   <   n;   loop++)   {  
  System.out.println(vector.elementAt(loop));
}

 
最后,只要善用wtk的Monitor,就能及时地发现我们MIDlet中的内存杀手,将lag消饵于无形之中。


转http://www.cnjm.net/tech/article2924.html

------解决方案--------------------
mark
------解决方案--------------------
在prefsw.exe里enable monitor监控程序运行占用内存
------解决方案--------------------
mark
------解决方案--------------------
貌似有些过时了,毕竟现在已经不是S40时代了,内存都以M记了,所以问题不大,不过,楼主的精神还是鼓励
------解决方案--------------------
嗯,是啊
无数文章说drawString是内存杀手
可是很多时候我还是得用,赫赫
只能尽量把String弄成static的
------解决方案--------------------
你要那么多drawString干什么!!!
------解决方案--------------------
不用drawString,用什么才能表达意思啊?把文字做成连续png图像?
------解决方案--------------------
学习!!
!!
!!
------解决方案--------------------
又是好文,MARK
------解决方案--------------------
不要学习了,寒,不要拿我学生时代写的文章出来丢人了,这些事情都不是重点。。。。。。
------解决方案--------------------
up
------解决方案--------------------
有些启发,可以使我们对在何时构建对象有更深入的了解.顶下
------解决方案--------------------
有些启发

文章评论

程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
 程序员的样子
程序员的样子
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我是如何打败拖延症的
我是如何打败拖延症的
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员的鄙视链
程序员的鄙视链
10个调试和排错的小建议
10个调试和排错的小建议
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员必看的十大电影
程序员必看的十大电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
代码女神横空出世
代码女神横空出世
漫画:程序员的工作
漫画:程序员的工作
程序员和编码员之间的区别
程序员和编码员之间的区别
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
一个程序员的时间管理
一个程序员的时间管理
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
鲜为人知的编程真相
鲜为人知的编程真相
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员都该阅读的书
程序员都该阅读的书
程序员应该关注的一些事儿
程序员应该关注的一些事儿
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
老程序员的下场
老程序员的下场
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
每天工作4小时的程序员
每天工作4小时的程序员
中美印日四国程序员比较
中美印日四国程序员比较
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
总结2014中国互联网十大段子
总结2014中国互联网十大段子
编程语言是女人
编程语言是女人
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
为什么程序员都是夜猫子
为什么程序员都是夜猫子
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
旅行,写作,编程
旅行,写作,编程
如何成为一名黑客
如何成为一名黑客
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有