j2me应用程序内存优化三招

来源:互联网 发布:手机网购秒杀软件 编辑:程序博客网 时间:2024/05/17 23:47

  out momory 一阵天旋地转内存又溢出了。在手机上这种痛苦经常都有,套一句俗话在手机上用内存必须勒紧裤腰带。虽然现在pc内存上g都不奇怪,可是在手机上却只能以k来记,可能某位同志会马上跳出来说也有上m的,记住中国还不富大多数手机都是低端手机。写手机程序让我仿佛回到了dos时代(自我安慰一下那个时代也炼出了不少高手说不定我是下一个)。言归正传做内存优化可以归结为以下几种方法。代码优化,图片优化,第三方工具优化等…

  内存会溢出肯定和代码逃不了关系,99.99%学java的人都知道垃圾回收器是java的一大优点并据此来嘲笑c++。显然这个特性为代码编写者省了不少事,但这个特性却带来了不少隐患。举个例子在游戏当中经常有不同场景的切换,如从游戏逻辑退到主菜单逻辑,对游戏逻辑对象的态度很多人会选择忘记等待垃圾回收器来收尸。乍看之下似乎并无不妥垃圾回收器会来善后。实际上垃圾回收器并非实时的,它不像c++的delete语句马上释放不用的内存。当从游戏逻辑切换到主菜单逻辑这时两个对象同时存在很可能这时内存就不够用了。读到这里很多人会发现实际上垃圾回收器在j2me上并不怎么好用,从一个角度上来讲在j2me上所有垃圾必须由手工释放,除简单类型以外所有对象都必须显式地置空例如 imgs=null; 实际上java提供了一个不错的工具用来查找内存溢出,java.lang.runtime.freememory() 。它可以返回当前的剩余内存数,将它适当的安放在代码中可以有效的监测内存使用状况。很大一部份的j2me程序员之前都是从事pc软件开发工作,充裕的内存掩盖了许多写代码的不良习惯。如下所示:

  把所有对象的初始化放在构造函数里想必是再正当不过了,大多数人通常的做法是把当前逻辑所要用到的资源通通初始化完毕。

  强烈建议将这些资源放在文件中需要时在load进来。这些资源文件如果放在代码中则会占用不小的代码段空间,而代码一般是程序一运行就装载到内存当中。