elasticsearch G1垃圾回收器

elasticsearch G1垃圾回收器

转载自:http://donlianli.iteye.com/blog/1948787

Java的垃圾回收真是让人又恨又爱。当今大内存已经成为服务器的趋势,使用CMS垃圾回收有点捉襟见肘。为何要使用g1垃圾回收,我想用过es的人都会很清楚。下面我就介绍一下在elasticsearch中,如何使用G1垃圾回收。

首先找到es的配置文件。elasticsearch.in.sh,这个文件在es的bin目录下面。

然后找到配置垃圾回收的配置。

# Force the JVM to use IPv4 stackif [ "x$ES_USE_IPV4" != "x" ]; then  JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"fiJAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"

加黑的这4行都注释掉。

然后换成:

JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"

然后启动es就可以了。

好了,然后咱们回过头来说说为啥要使用g1垃圾回收。

首先:G1是Java7以后推荐的垃圾回收方式。自然有他很多的好处,jdk本身肯定对他做了很多优化。这个详细的我也不清楚。

但是,更重要的是,现在的Java程序,谁没有十来G的内存可以使用。特别像es这样的存储系统。你甚至都想给他配个几百G,省得你内存不够用。大内存导致Java的GC停顿时间长到让人难以容忍的程度。G1就是专门为这种大内存的应用程序提出的新一代内存垃圾回收解决方案。

另外,oracle官方建议,使用g1回收时,不要设置年轻代内存大小。

G1的配置还有很多参数,详细参数见官网

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部