Effective Java 學習筆記(六 七)

2021-07-25 00:20:58 字數 638 閱讀 1494

【第六條:消除過期的物件引用】

其實這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...