引用
引用分為強引用(Strong Referncel)、軟引用(Soft Reference)冷溶、弱引用(Weak Reference)、虛引用(Phantom Reference)4種杂彭。引用強度依次逐漸減弱双揪。
- 強引用對象永遠不會被垃圾回收器回收掉
- 軟引用在系統(tǒng)將要發(fā)生內(nèi)存溢出前列入回收范圍進行第二次回收,使用SoftReference類來實現(xiàn)句喷。
- 弱引用關(guān)聯(lián)的對象只能生存到下一次垃圾收集發(fā)生之前镣典。使用WeakReference類來實現(xiàn)。
- 虛引用的唯一目的是能在對象被收集器收集時受到一個系統(tǒng)通知唾琼。使用PhantomReference兄春。
finalize()
任何一個對象的finalize方法只會被系統(tǒng)自動建立的、低優(yōu)先級的Finalizer線程執(zhí)行一次
finalize()能做的所有工作锡溯,使用try-finally或其他方法都可以做的更好更及時赶舆。所以不建議使用finalize()
垃圾收集算法
標記-清除算法
- 標記和清除兩個過程效率都不高
- 會產(chǎn)生大量碎片
復(fù)制算法
實現(xiàn)簡單,運行高效
內(nèi)存代價太高
多用于回收新生代祭饭,新生代對象98%是“朝生夕死”的芜茵,不必按1:1劃分內(nèi)存
內(nèi)存分為一塊較大的Eden空間和兩塊較小的Survivor空間。Hotspot默認比例為8:1倡蝙,只有10%內(nèi)存會浪費九串。
標記-整理算法
用于老年代