今天看一本書,書上提到了內存泄露,後面也提到了內存管理的小技巧,在這裏記下來,以避免之後忘記。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軟引用。