天天看點

java 記憶體移到堆外!!! Jvm gcih 淘寶優化JVM實踐Jvm gcih出自Jvm  GC-Invisible HeapGCIH記憶體共享

gc-invisible heap,簡稱gcih,是一種将java對象從java堆内移動到堆外,并且可以在jvm間共享這些對象的技術。

下面的性能測試資料來自于線上gcih + hesper + forest的實際壓測資料,具體結論由淘寶性能測試團隊統計。

系統load對比

機器資源消耗對比

單機最大能力對比

綜上:gcih的性能明顯優于非gcih,可以使單機能力提升20%左右。

gcih 記憶體共享有以下特點:

不經過jni調用

沒有序列化和反序列化

gc性能提高

資料更集中,cache命中率提高

map/reduce 有時需要一些公用的對象,每個client jvm都有一份拷貝。

一旦初始化好,在使用過程中是隻讀的

對象比較大,占用較多記憶體,甚至成為瓶頸

一個實際場景,dump中心的udp,用來做join的一些公共hashmap共享後可以節約記憶體,甚至可能提高效率(如果記憶體是瓶頸)

下圖顯示了使用gcih記憶體共享功能後的hadoop系統狀況,左邊的圖表示使用gcih前系統内每個jvm程序内均有一份對象的拷貝, 右邊的圖顯示使用gcih後多個jvm程序共享一份資料,有效降低了實體記憶體的使用。 

java 記憶體移到堆外!!! Jvm gcih 淘寶優化JVM實踐Jvm gcih出自Jvm  GC-Invisible HeapGCIH記憶體共享

繼續閱讀