JVM的Eden由來

yyyggyy發表於2020-10-18

JVM(PART II)Eden Survivor名稱由來

Eden:

含義:伊甸園(The garden of Eden)

Survivor:

含義:倖存者

GC:

含義:Garbage Collection

Stop the world event

含義:地球停轉事件,簡稱STW,即在執行垃圾收集演算法時,Java應用程式的其他所有除了垃圾收集收集器執行緒之外的執行緒都被掛起

為什麼java的垃圾回收裡會使用這幾個名詞來作為堆記憶體的名稱呢?

《創世紀》裡的幾個小故事:

上帝創造人類

上帝花了六天時間去創造萬物,在第六天他按照自己的形象創造出人類(亞當),後來他感覺亞當一個人有點孤獨,於是使用亞當的一根肋骨創造出了夏娃。並且把他們和很多動物植物都放在一個叫做伊甸園(The garden of Eden)。
這裡寫圖片描述

亞當夏娃偷吃善惡果

上帝告訴亞當和夏娃不要偷吃善惡樹上的果子,但是在撒旦的誘惑下他們還是偷吃了,於是上帝把他們趕出了伊甸園。
這裡寫圖片描述

該隱和他的弟弟

亞當和夏娃有兩個兒子,一個叫該隱,一個叫亞伯。該隱因為一件事嫉妒亞伯,把自己的弟弟亞伯給殺了。
這裡寫圖片描述

諾亞方舟

上帝感到人類的罪惡深重,於是他決定來一次大清洗,他的辦法很簡單——使用洪水(GC)。在這之前他讓諾亞造了一個大船(諾亞方舟),在洪水來到的時候登上船的人和動物都沒有死去(Survivor)。這些人和動物都開始重建家園。
這裡寫圖片描述

再來看看java的堆記憶體:
這裡寫圖片描述

《創世紀》和JVM的對於關係

如果把《創世紀》中的人和動物比作JVM堆記憶體中的物件的話,還是列個表:


《創世紀》JVM
伊甸園(The garden of Eden)Eden區
諾亞方舟(Noah’s Ark)兩個Survivor區
諾亞(Noah)GC演算法
大洪水(The flood)一次Minor GC ——Stop the World event(地球轉事件)
倖存的人和動物從Eden區進入Survivor區的物件
被大洪水消滅的人和動物被GC回收的物件

這麼一看這些比喻還是非常恰當的。


轉載自:https://blog.csdn.net/uncle_gy/article/details/78136966

相關文章