【第六條:消除過期的物件引用】
其實這5、6、7三章是對物件使用乙個說明。
合適的業務使用合適的技術,合理的使用物件池,物件,以及finalizer方法。
書中提到的關於 stack 這裡就不做說明。
文中提到了實現map介面weakhashmap
public static void main(string args) throws interruptedexception
}
weakhashmap做一些快取資料操作是合適的。
上面**列印出來的結果是:
c:d
實際上通過手動gc一次,鍵值a為null被**。
【第七條:避免使用終結方法(finalizer)】
原因:1、終結方法通常是不可**的,也很危險,一般情況下是不必要的
2、使用終結方法有乙個非常嚴重的server效能損失
總結第六、七條實際上告訴讀者,我的理解:
使用物件的過程中對於物件的使用**大部分時間都應該交給jvm自己去處理,但是可以使用jdk提供一些工具類來幫助更好的使用物件,如:weakhashmap等。
實際開發應用專案中合理的調整jvm記憶體分配也是很重要的一點,這個後期再補充。
Effective Java 學習筆記 6
及時消除不使用的物件的引用,理論上,帶有記憶體管理的語言是不存在記憶體洩漏的,但是如果對物件的操作不當,也是可能會造成記憶體洩漏.如有乙個stack,其pop函式如下.public object pop if element.length 0 return null return element s...
Effective Java 學習筆記(5)
盡量復用物件,而不是建立新的物件,特別是當乙個物件是immutable 不可改變 的時候。如string物件,string s new string string 千萬不要這樣做,因為這裡實際上建立了兩個物件。要避免出現這樣的情況,1是可以用靜態工廠函式,來解決,如類庫中的boolean.value...
Effective Java 學習筆記 6
及時消除不使用的物件的引用,理論上,帶有記憶體管理的語言是不存在記憶體洩漏的,但是如果對物件的操作不當,也是可能會造成記憶體洩漏.如有乙個stack,其pop函式如下.public object pop if element.length 0 return null return element s...