选择显示字体大小

java学习:j2me中的内存泄漏

  不知道主题为“j2me中的内存泄漏”是否妥当,不过在j2me中如果处理不好资源的创建和释放问题,也会出现类似在c\c++中的内存泄漏现象。

    j2me中最常使用的资源无非是图片和声音。为了提高游戏的运行速度,我们通常把它们声明为全局变量,又由于手机的内存的关系,我们不能把这些资源同时加载进内存,所以我们会在使用的时候导入资源(创建对象),而把暂时不需要的资源(图片或声音)对象赋值为null(当然这是我的做法,不知道是否和大家一样)。在这期间如果处理不好,就会有些资源对象的在内存中没有清除干净,就会造成内存泄漏,结果就是可用内存越来越小。下面我就举例说明。

  1.图片资源

  要点:要为每一个图片资源声明一个对象变量

  假设在一个程序声明了2个图片对象:

        image pic1,pic2;
  如果在某一时刻要使用pic1和pic2则:
        if(pic1==null)pic1=image.createimage("/1.png");
        if(pic2==null)pic2=image.createimage("/2.png");
  当这些图片用完后,就应当:
        pic1=null;
        pic2=null;
  如果需要使用另外两个图片3.png和4.png,则最好另声明两个变量对象pic3,pic4来导入它们,不要使用pic1,pic2变量来导入这两个图片,如:
        if(pic1==null)pic1=image.createimage("/3.png");//不要这样做
        if(pic2==null)pic2=image.createimage("/4.png");//不要这样做
  因为这样做会影响垃圾收集器对pic1,pic2对象的回收工作,从而造成内存回收不干净。

  2.声音资源(不同的平台对声音的处理方式不同)
 
  要点:和图片资源一样,另外在回收声音资源一定要停止声音的播放;还有在每次开始播放声音前,也要先判断一下声音的状态(简单点,直接调用stop,先让声音停下来,然后再播放),如果不先停止声音的播放,再调用其运行播放,可能会生成无法回收的对象(这是本人猜测的)造成内存的泄漏。

  如:
  假设sound为声音对象
  释放sound资源:
         if(sound!=null)
         {
              sound.stop();
              sound=null;
         }
  这样sound的资源就可以安全的被垃圾回收器收回了
  播放声音资源:
         if(sound!=null)
         {
              sound.stop();
              sound.start();
         }
  以上就是我的经验之谈,也许有错误的地方请大家原谅。谢谢


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons