Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 混乱的Zookeeper内存使用_Java_Garbage Collection_Apache Zookeeper_Visualvm - Fatal编程技术网

Java 混乱的Zookeeper内存使用

Java 混乱的Zookeeper内存使用,java,garbage-collection,apache-zookeeper,visualvm,Java,Garbage Collection,Apache Zookeeper,Visualvm,我有一个zookeeper的实例已经运行了一段时间。。。(Java1.7.0131,ZK3.5.1-1),带有-Xmx10G-XX:+UseParallelGC 最近领导层发生了变化,仲裁中大多数实例的内存使用量从~200MB增加到2GB+。我获取了一个jmapdump,我发现有趣的是有很多byte[]serialization数据(>1GB)没有GC根,但还没有被收集 (这是ByteArrayOutputStream,DataOutputStream,org.apache.jute.Binar

我有一个zookeeper的实例已经运行了一段时间。。。(Java
1.7.0131
,ZK
3.5.1-1
),带有
-Xmx10G-XX:+UseParallelGC

最近领导层发生了变化,仲裁中大多数实例的内存使用量从~200MB增加到2GB+。我获取了一个
jmap
dump,我发现有趣的是有很多
byte[]
serialization数据(>1GB)没有GC根,但还没有被收集

(这是
ByteArrayOutputStream
DataOutputStream
org.apache.jute.BinaryOutputArchive
,或
HeapByteBuffer
BinaryOutputArchive

查看gc日志,选举变更前不久,完整gc每4-5分钟运行一次。选举后,任期阈值从1增加到15(最大值),完整GC运行的频率越来越低,最终在某些天甚至不运行

几天后,突然,对我来说不可思议的是,有些事情发生了变化,内存骤降到~200MB,每4-5分钟运行一次完整的GC

我在这里感到困惑的是,这么多的内存没有GC根,不能被完整的GC收集。我甚至尝试过几次从
jcmd
触发
GC.run

我想知道ZK故乡是否有什么东西抓住了这段记忆,或者泄露了这段记忆。。。这可以解释

我正在寻找任何调试建议;我计划升级Java
1.8
,可能是ZK
3.5.4
,但在继续之前,我真的很想从根本上解决这个问题

到目前为止,我已经使用了visualvm、GCviewer和EclipseMat


(实心垂直黑线表示完全GC。黄色表示年轻一代)。

我不是ZK方面的专家。然而,我已经在Weblogic上调优JVM一段时间了,根据这些信息,我觉得您的配置正在生成堆的扩展和收缩(-Xmx10G-XX:+UseParallelGC)。因此,也许您应该尝试使用-Xms10G和-Xmx10G来避免这种大小调整。重要的是,每次调整JVM的大小时,都会执行一个完整的GC,因此避免这个过程是最小化完整垃圾收集数量的好方法

请看这个

“当热点JVM启动时,堆、年轻一代和perm生成空间将被删除 分配给由-Xms、-XX:NewSize和-XX:PermSize参数确定的初始大小 并根据需要增加到最大保留大小,即-Xmx- XX:MaxNewSize和-XX:MaxPermSize。如果 内存没有最初指定的那么多。但是,每次调整大小活动都会触发 完全垃圾收集(GC),因此会影响性能 建议您使初始尺寸和最大尺寸相同“

资料来源:

如果你能提供你的gc.log,彻底分析这个案例会很有用

致以最良好的祝愿, 碾压混凝土