2017-05-15 18 views
2

我一直無法找到System.gc()建議JVM執行的GC類型。 Here,據說「System.gc()方法...強制主要收藏」,但this後意味着請求完整的gc。System.gc()觸發什麼類型的GC?

任何人都可以澄清或指出說明這一點的文檔?換句話說,它是要求的主要或全部gc?

回答

3

這取決於您使用的JVM。

假設您使用熱點,行爲因傳遞給它的標誌而異。默認情況下,它會觸發一個完全停止的GC,它會在日誌中顯示爲導致[Full GC (System.gc)]的gc。使用DisableExplicitGC它根本不會調用任何GC。如果使用G1或CMS,則ExplicitGCInvokesConcurrent將更改該行爲,以啓動併發舊gen集合。

由於GC循環變得更加細緻,主要和次要術語不再有用。

如果有疑問,請啓用GC日誌並自行查看。