首先得知道JVM堆記憶體分為old和 young ,young又由eden 和survivor組成 而 survivor又由s0和s1組成。
當Eden區域達到一定的量時,觸發了Minor GC,即將Eden和S0中的存活的物件複製S1中 然後清空Eden和S0,然後下一次觸發Minor GC時就將Eden和S1中的存活的物件複製S0中,然後清空Eden和S1 迴圈往復,當某個物件對複製次數達到16次,該物件就會被送到Old中。
如果我們手動將JVM記憶體設定小一點,GC會更明顯。
在eclipse中設定,可以看到我們設定的JVM初始堆大小為128M ,再看記憶體,它的GC會更加頻繁。
你會發現 一個公式
30.5 + 6 +6 + 85.5 = 128
這裡的128就是我們eclipse中設定的堆記憶體大小。
首先得知道JVM堆記憶體分為old和 young ,young又由eden 和survivor組成 而 survivor又由s0和s1組成。
當Eden區域達到一定的量時,觸發了Minor GC,即將Eden和S0中的存活的物件複製S1中 然後清空Eden和S0,然後下一次觸發Minor GC時就將Eden和S1中的存活的物件複製S0中,然後清空Eden和S1 迴圈往復,當某個物件對複製次數達到16次,該物件就會被送到Old中。
如果我們手動將JVM記憶體設定小一點,GC會更明顯。
在eclipse中設定,可以看到我們設定的JVM初始堆大小為128M ,再看記憶體,它的GC會更加頻繁。
你會發現 一個公式
30.5 + 6 +6 + 85.5 = 128
這裡的128就是我們eclipse中設定的堆記憶體大小。