内存优化:
1:jvm内存设置、变量用到的时候在初始化、不再使用的变量=null、以便gc回收、
2:没有必要时不要使用静态变量
3:充分利用单例机制:减少资源加载、缩短运行时间、提高系统效率
4:减少对象创建:尤其是循环中,系统要花时间创建obj、还要回收这些obj
5:使用final修饰符:一个class是final的 其中方法都是final
6:尽量使用局部变量:调用方法时传递的临时变量都是分配给方法的栈【stack】中、速度较快
其他变量、如静态变量、实例变量等、都是在堆【Heap】中创建、速度较慢
7:学会使用StringBuilder 和 StringBuffer
单线程使用StringBuilder 多线程使用StringBuffer
8:尽量不要使用finalize方法:会导致GC负担更大
9:尽量使用基本类型代替对象
String str = "str";
String str = new String("str");//不要使用这种方式
10:学会使用HashMap、ArrayList
HashTable、Vector中使用多线程机制、内部使用同步机制、会降低性能
11:深入理解HashMap 当要创建比较大的hashMap时候、尽量避免HashMap进行多次hash重构
12:减少对变量的重复性运算
for(int i = 0; i < list.size() ; i++ )
for(int i = 0,len = list.size(); i < len; i++)
13: 避免不必要对象创建
14:尽量在finally中释放资源
15:使用移位来代替乘除法 >> << 左移1位×2 右移1位 /2
16: 尽早释放无用对象的引用
17:尽量避免使用split 考虑使用apache的StringUtils.split(string,char)
18: ArrayList 和 LinkedList
一个是线性表、一个是链表、
一句话、随机查询使用ArrayList\ 添加删除操作使用LinkedList由于ArrayList
19:尽量使用System.arrayCopy() 替代 通过循环复制数组
20:尽量缓存经常使用的对象
21:尽量避免非常大的内存分配
有时候问题不是有当时堆状态造成的、而是因为分配失败造成的、分配的内存块必须是连续的、而随着
堆Heap越来越满、找到内存大的越来越困难
22:慎用异常
引用地址:http://blog.csdn.net/john_f_lau/article/details/9206253