java--内存管理的几点小技巧

今天看一本书,书上提到了内存泄露,后面也提到了内存管理的小技巧,在这里记下来,以避免之后忘记。java

1.尽可能使用直接量。好比:String str = "I can play!";而不是 String str = new String("I can play!");注意,此处并非说后一种不对,只是相对前一种来讲,后面一种方式在内存中须要建立两次对象,一次在字符创缓存池,一次是String对象底层的char[]数组。而第一种只需一次。数组

2.使用String builder和String Buffer来进行字符串链接。String表明字符序列不可改变的字符串,String Builder和String Buffer表明字符序列能够改变的字符串。使用String进行字符串链接时程序会产生大量的临时字符串,会消耗系统内存。而String buffer与String builder在使用方法上几无区别,区别在于String Buffer是相似于hashtable的线程安全的,里面有一些带同步锁的方法,而String builder是相似于hashmap的线程不安全的,在单线程模式中速度较快。缓存

3.尽早释放无用对象的引用。例如:安全

public void info(){jvm

  Object o = new Object();性能

  System.out.print(o.toString);ui

  System.out.print(o.hashcode);线程

  o = null;code

  //执行耗时、耗内存操做或者调用耗时耗内存的方法对象

}

4.尽可能少用静态变量。jvm会将程序用static修饰的类的信息存入Permanent代,这将使得带有静态属性的类一直有效,从而使得内存空间没法回收。

5.避免在常常调用的方法、循环中建立java对象。由于系统会不断的为建立的这些对象分配内存空间,执行初始化操做,程序的性能会受到巨大的影响。

6.缓存常用的对象。有两种方式:使用hashmap进行缓存,使用某些开源的缓存项目例如Oscache、Ehcache。

7.尽可能不要使用finalize() 方法。

8.考虑使用SoftReference软引用。

相关文章
相关标签/搜索