每日一題(六)

今天是補前兩天的博客,這幾天有點忙,而且網斷了,沒法上網。今天補一下。

問題:

java內存回收機制之對象引用類型

分析:

java內存回收是一個很值得討論的話題,而且對於java工程師來說,這是一個避免不了的問題。只有深刻了解jvm內存回收機制,才能寫出更高效的程序。

解答:

對象引用類型主要分爲四類:強引用、軟引用、弱引用和虛引用(機制並非實際引用類型)

在jdk中後三個引用類是共同繼承於Reference類。類間關係如下:

java.lang.ref

——java.lang.ref.Reference<T>

直接已知子類:PhantomReference(虛引用)、SoftReference(軟引用)和WeakReference(弱引用)

下面是對他們的分別介紹

1.強引用。使用new關鍵字,如Apple apple = new Apple(“small”)。適用情形:這樣的引用無論系統資源如何緊張,都不會回收。即使以後他再也不會用到。

2.軟引用。通過SofReference類實現,如SoftReference <Apple> apple = new SoftReference <Apple>(new Apple(“small”))。jdk裏這樣描述:“軟引用對象,在響應內存需要時,由垃圾回收器決定是否清除此對象”

3.弱引用。通過WeakReference類實現,如WeakReference<Apple> apple = new WeakReference<Apple>(new Apple("big"));不管內存是否夠,系統垃圾回收時必定回收。

4.虛引用。主要用於跟蹤對象被垃圾回收的狀態。通過PhantomReference類和引用隊列ReferenceQueue類聯合使用實現。

通過了解內存對象引用層次,這樣將來在寫程序時可以具體問題具體對待(三個層次:強引用、軟引用和弱引用)。

前幾天眼睛有點痛,看醫生買藥,所以不能用電腦。現在休息過來,特地將缺失的內容慢慢補上。

這裏的內容參考了http://blog.jobbole.com/37273/ 的博客,然後補充了一些內容,特此說明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章