史上最全Java面試題之垃圾回收部分!(帶全部答案)
關於垃圾回收
你知道哪些垃圾回收演算法?
垃圾回收從理論上非常容易理解,具體的方法有以下幾種:
1. 標記-清除
2. 標記-複製
3. 標記-整理
4. 分代回收
如何判斷一個物件是否應該被回收
這就是所謂的物件存活性判斷,常用的方法有兩種:
1 .引用計數法;
2 .物件可達性分析。由於引用計數法存在互相引用導致無法進行GC的問題,所以目前JVM虛擬機器多使用物件可達性分析演算法。
簡單的解釋一下垃圾回收
Java 垃圾回收機制最基本的做法是分代回收。記憶體中的區域被劃分成不同的世代,物件根據其存活的時間被儲存在對應世代的區域中。一般的實現是劃分成3個世代:年輕、年老和永久。記憶體的分配是發生在年輕世代中的。當一個物件存活時間足夠長的時候,它就會被複制到年老世代中。對於不同的世代可以使用不同的垃圾回收演算法。進行世代劃分的出發點是對應用中物件存活時間進行研究之後得出的統計規律。一般來說,一個應用中的大部分物件的存活時間都很短。比如區域性變數的存活時間就只在方法的執行過程中。基於這一點,對於年輕世代的垃圾回收演算法就可以很有針對性。
呼叫System.gc()會發生什麼?
通知GC開始工作,但是GC真正開始的時間不確定。