码迷,mamicode.com
首页 > 编程语言 > 详细

java 内存移到堆外!!! Jvm gcih 淘宝优化JVM实践

时间:2014-05-01 17:39:58      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:淘宝   优化   内存   jvm   性能测试   

官方地址

Jvm gcih

出自Jvm  GC-Invisible Heap

什么是GCIH

GC-Invisible Heap,简称GCIH,是一种将Java对象从Java堆内移动到堆外,并且可以在JVM间共享这些对象的技术。

为什么要用GCIH

 GCIH顾名思义就是GC访问不到的堆,它是对JVM内存管理机制的一个有益的补充。
 在某些特殊的应用中有大量生命周期很长的对象,在应用运行的整个过程中它们都存在,不需要被GC回收。如果这类对象很多,总体占用内存比例高,那么他们的存在将给GC带来很多不必要的工作负担。例如在淘宝的很多应用中都具有大量的Forest对象,目前这些对象已经占用超过400MB,它们本身在应用提供服务前创建,在服务过程中永远存在。那么实际在GC的收集工作中针对这些对象的所有访问、操作其实都是“无用功”。如果我们把这些对象 从Java堆内移动到堆外,那么这些对象所占用的Java堆内空间将被释放,GC的工作量将会降低,从而每次full GC的时间将会缩短。
 除此以外,目前JVM间没有很高效的内存/对象共享技术,GCIH为在JVM间共享内存/对象提供了必要的基础。通过这种技术可以将那些移动到GCIH内对象在JVM间共享,从而减少内存的总体占用。

GCIH + Hesper + Forest线上测试结果对比

下面的性能测试数据来自于线上gcih + hesper + forest的实际压测数据,具体结论由淘宝性能测试团队统计。

  • 系统load对比
 在相同的tps下,采用gcih的hesper响应时间明显要比不采用gcih的hesper的响应时间要低。随着压力的不断增加,tps超过55后,非gcih的hesper响应时间明显上升速度加快,当tps上升至72后,响应时间直接飙至200ms以上。而采用gcih的响应时间上升速度则相对于平缓。
  • 机器资源消耗对比
 在tps处于20~50之间时,gcih的load要略低于非gcih。在tps超过55后,非gcih的load出现急速上升。 在tps相同的情况下,gcih的cpu消耗约降低20%~30%.
  • 单机最大能力对比
 当load达到5~6之间、且RT<200ms的情况下,hesper(非gcih)的tps约为46~55左右,hesper(gcih)的tps值约为60~68左右。此时,hesper(非gcih)的单机能力比hesper(gcih)提升20%;
 当load<15,cpu使用率<85%的情况下,hesper(非gcih)的最大单机能力为tps:68~70,hesper(gcih)的tps值约为88左右。此时计算,采用gcih的hesper应用单机最大能力可提升25%。
  • 综上:gcih的性能明显优于非gcih,可以使单机能力提升20%左右。


GCIH内存共享

有关GCIH内存共享

GCIH 内存共享有以下特点:

  • 不经过JNI调用
  • 没有序列化和反序列化
  • GC性能提高
  • 数据更集中,cache命中率提高

GCIH内存共享与Hadoop

  • Map/Reduce 有时需要一些公用的对象,每个client JVM都有一份拷贝。
  • 一旦初始化好,在使用过程中是只读的
  • 对象比较大,占用较多内存,甚至成为瓶颈
  • 一个实际场景,dump中心的UDP,用来做join的一些公共Hashmap共享后可以节约内存,甚至可能提高效率(如果内存是瓶颈)

下图显示了使用GCIH内存共享功能后的Hadoop系统状况,左边的图表示使用GCIH前系统内每个JVM进程内均有一份对象的拷贝, 右边的图显示使用GCIH后多个JVM进程共享一份数据,有效降低了物理内存的使用。 


官方地址

mamicode.com,码迷

官方地址

官方地址

java 内存移到堆外!!! Jvm gcih 淘宝优化JVM实践,码迷,mamicode.com

java 内存移到堆外!!! Jvm gcih 淘宝优化JVM实践

标签:淘宝   优化   内存   jvm   性能测试   

原文地址:http://blog.csdn.net/kkgbn/article/details/24801395

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!