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

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

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

避免内存溢出

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

如 :算法

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

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

不用的对象设置成null函数

l 内存溢出一般发生在构造函数中,在构造函数中变量在要用时再new,用完以后置nullpost

一次性加载全部图片很容易形成内存峰值。性能

能够用 if(img==null){优化

 

Create…网站

}url

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去查找哪里须要优化

改进你的算法,写最优的代码
相关文章
相关标签/搜索