好的Java编程习惯

1. 对象不要提前声明,尽量在使用前声明,减少JVM的消耗.

2. 尽量避免显式调用System.gc().

3. 尽早将不使用的引用对象设置为null,这样可以加速GC的工作.

4. 尽量少用finalize函数,finalize函数是java程序提供一个释放空间的机会,但是会加大GC的工作量.

5. 尽量避免在类构造函数里面创建初始化大量的对象,防止再调用构造器时造成不必要的内存浪费.

6. 数据结构对GC的回收比较复杂,全局的变量和一些静态的方法容易造成悬挂,造成内存浪费.

7. 尽量在合适的场合使用对象池技术复用对象来提高系统性能,但是要注意内存池大小不要设置过大

8. 别用new Integer

  和Boolean类似,java开发中使用Integer封装int的场合也非常多,并且通常用int表示的数值通常都非常小。SUN SDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这256个状态的Integer,如果使用 Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。

这样如果我们使用Integer.valueOf代替new Integer的话也将大大降低内存的占用。

9. 用StringBuffer代替字符串相加

10.不要过滥使用哈希表

  有一定开发经验的开发人员经常会使用hash表(hash 表在JDK中的一个实现就是HashMap)来缓存一些数据,从而提高系统的运行速度。比如使用HashMap缓存一些物料信息、人员信息等基础资料,这在提高系统速度的同时也加大了系统的内存占用,特别是当缓存的资料比较多的时候。其实我们可以使用操作系统中的缓存的概念来解决这个问题,也就是给被缓存的分配一个一定大小的缓存容器,按照一定的算法淘汰不需要继续缓存的对象,这样一方面会因为进行了对象缓存而提高了系统的运行效率,同时由于缓存容器不是无限制扩大,从而也减少了系统的内存占用。现在有很多开源的缓存实现项目,比如ehcache、oscache等,这些项目都实现了FIFO、MRU等常见的缓存算法。

11. 避免过深的类层次结构和过深的方法调用

  因为这两者都是非常占用内存的(特别是方法调用更是堆栈空间的消耗大户)。

12. 变量只有在用到它的时候才定义和实例化

13. 尽量避免使用static变量,类内私有常量可以用final来代替

15. 保证每个IO操作,connection及时关闭

posted on 2012-10-13 15:48  melburg  阅读(157)  评论(0)    收藏  举报