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++)
l 不要重复初始化变量
默认状况下,调用类的构造函数时, Java会把变量初始化成肯定的值:全部的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和 double变成0.0,逻辑值设置成false
l 乘法和除法用移位 ,除法比乘法慢,因此用乘于倒数来代替除法
考虑下面的代码:
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去查找哪里须要优化