今天是補前兩天的博客,這幾天有點忙,而且網斷了,沒法上網。今天補一下。
問題:
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/ 的博客,然後補充了一些內容,特此說明。