• Java代码优化方案 J2ME内存优化


    Java代码优化方案 J2ME内存优化

    从几本书上,N个网站上整理的一些JAVA代码优化方案,最近的项目只有1M内存可用,必须很抠门了~J2ME项目更要注意的

    避免内存溢出

    l 不用的对象释放(置空)

    如 :

    a不为空时 a=new object()//这句代码执行时将有两个对象存在于内存中

    较好的写法是a=null; a=new object();

    不用的对象设置成null

    l 内存溢出通常发生在构造函数中,在构造函数中变量在要用时再new,用完之后置null

    一次性加载所有图片很容易造成内存峰值。

    可以用 if(img==null){

    Create…

    }

    l 考虑用静态工厂方法替代构造函数(但是,注意释放,单例模式的释放只能由自己来做)。

    l 使用局部变量

    l 图形重绘操作用部分重绘

    l 避免在同一个类中通过调用get set来设置或调用变量,用public

    l 避免在循环中生成同一个变量或调用同一个函数

    l 常用变量尽可能用static final private

    l 能用byte的就不用int,String

    l 不要使用double

    l 复制大量数据时用System.appaycopy()

    l 避免使用泛型

    l 尽量不使用try catch,必须使用时不要在循环体内写try catch

    l 字符串操作使用StringBuffer

    代码2是代码1执行速度的两倍:

    代码1:

    String title=new String(“大家好”);

    Title+=”欢迎”;

    Title+=”阅读”

    //会在栈中生成五个对象:“大家好”,“欢迎”,“阅读”,“大家好欢迎”,“大家好欢迎阅读”

    代码2:

    StringBuffer title=new StringBuffer(“大家好”);

    Tltle.append(“欢迎”);

    Title.append(“阅读”);

    l StringBuffer的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再丢弃旧的数组。在大多数情况下,你可以在创建StringBuffer的时候指定大小,这就避免了在容量不够的时候自动增长,以提高性能。

    l 使用零值做为判断条件

    For(int i=a.length()-1;i>=0;i--) 优于 for(int i=0;i<a.length();i++)

    不要重复初始化变量

    默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和 double变成0.0,逻辑值设置成false

    乘法和除法用移位 ,除法比乘法慢,所以用乘于倒数来代替除法

    考虑下面的代码:

    for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

    用移位操作替代乘法操作可以极大地提高性能。下面是修改后的代码:

    for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

    l 传递尽可能少的参数到经常调用的方法

    l 不要有空方法,或方法内代码很少而方法又很少调用

    l 避免类型转换

    使用Profiler去查找哪里需要优化

    改进你的算法,写最优的代码
  • 相关阅读:
    Oracle 推出 ODAC for Entity Framework 和 LINQ to Entities Beta版
    Entity Framework Feature CTP 5系列文章
    MonoDroid相关资源
    MSDN杂志上的Windows Phone相关文章
    微软学Android Market推出 Web Windows Phone Marketplace
    使用 Visual Studio Agent 2010 进行负载压力测试的安装指南
    MonoMac 1.0正式发布
    Shawn Wildermuth的《Architecting WP7 》系列文章
    使用.NET Mobile API即51Degrees.mobi检测UserAgent
    MongoDB 客户端 MongoVue
  • 原文地址:https://www.cnblogs.com/langtianya/p/3891534.html
Copyright © 2020-2023  润新知