码迷,mamicode.com
首页 > 编程语言 > 详细

java程序性能优化

时间:2015-04-19 22:52:11      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

1. 尽量避免随意使用静态变量

当某个对象被定义为static的变量引用时,那么GC通常是不会回收这个对象所占用的内存

public class A {

static B b = new B(); // 静态变量b的生命周期与A类同步, 只要A类不被卸载,那么b对象就会常驻内存,直到程序终止

}


2. 处理好包装类型和基本类型的使用场所

虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的,基本类型数据产生和处理在栈中;

包装类型是对象,在堆中产生实例。


3. 慎用synchronized

实现同步是要很大的系统开销为代价,甚至可能造成死锁,所以尽量避免无谓的同步控制。


4. 单线程尽量使用HashMap、ArrayList

HashTable、Vector等使用了同步机制,降低了性能。


5. 尽量减少对变量的重复计算

for(int i = 0; i < list.size(); i++)  // 循环中,循环条件会被反复计算

应该改为 for(int i = 0, len = list.size(); i < len; i++) 


6. 尽量避免不必要的创建

A a = new A();

if(i == 1){ list.add(a); }  

应该改为: if(i == 1){ A a = new A(); list.add(a); }  


7. 尽量确定StringBuilder的容量

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


8. 尽量早释放无用对象的引用

大部分时间,方法局部引用变量所引用的对象会随着方法结束而变成垃圾,因此,大部分时候程序无需将局部引用变量显示地设为null;但是如果对象较大,占用较多内存,不用的时候就应手动置为空了



java程序性能优化

标签:

原文地址:http://blog.csdn.net/zdp072/article/details/45132821

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!