天天看点

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内存共享

继续阅读