其中可達性分析法中,能夠做爲GCroot Set中的對象主要包括:算法
1. 虛擬機棧(棧幀中的本地變量表)中引用的對象; 2. 方法區中靜態屬性引用的對象; 3. 方法區中常量引用的對象; 4. 本地方法棧中JNI引用的對象。
1.強引用
相似Object obj = new Object();
只要強引用還在,就永遠不會被回收。
2.軟引用
描述一些有用但並不是必需的對象。在將要發生OOM以前,會把這些對象列進回收範圍之中進行第二次回收,若是回收尚未足夠內存,就拋OOM異常。
JDK1.2後提供了SoftReference來實現軟引用。
3.弱引用
弱引用也是描述非必需對象的,可是他的強度比軟引用更弱,被弱引用關聯的對象只能生存到下一次垃圾回收以前。1.2以後提供了WeakReference。當gc時,不管當前內存是否足夠,都會回收掉只被弱引用關聯的對象。
4.虛引用
最弱的引用關係,1.2以後用PhantomReference來實現,一個對象是否有虛引用,徹底不影響其生產時間,也沒法經過虛引用來得到一個對象的實例。惟一目的就是在對象被回收時,能夠收到一個系統通知。code
引用強弱:強>軟>弱>虛
關於騰訊提早批,問了強弱引用的區別,直接蒙了。。對象
四大種
1.標記-清除
2.複製算法
3.標記-整理算法
4.分代收集算法內存