性能问答>堆内一个多G,RES越来越高,最高使用20多个G,求助....>
7回复
2年前

堆内一个多G,RES越来越高,最高使用20多个G,求助....


环境参数
  • 操作系统Linux
  • 操作系统版本Linux version 3.10.0-327.36.3.el7.x86_64
  • JDK版本JDK8
  • 内存32GB
  • CPU核数32
  • 操作系统位数64位
jstask_0923.txt467.93KB
查看详情

dump_0923.png

RES 20G时候观察过线程数 GC情况看起来都没问题,怀疑是使用netty导致的堆外内存泄漏,也尝试过fullgc 但是RES并没有降低。

  • jvm 参数:

java -server -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dsun.lang.ClassLoader.allowArraySynta
x=true -Xms16g -Xmx16g -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=4 -XX:+PrintTenuringDistribution -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:NativeMemoryTracking=detail -verbose:gc

4202 阅读
请先登录,再评论

重启。所有DirectBuffer都换成HeapBuffer。升级组件。

2年前

RES 一直增长,可以直接考虑内存泄漏,在你这个场景中极有可能是Netty带来的堆外泄漏。你可以通过添加首页的微信,并把 dump 文件发过来,我们可以帮忙分一下。

2年前
回复 西湖の风:

学到了 -dump:live 哈哈哈

2年前回复
回复 君君:

嗯,同时如果要产生堆的 dump 文件,可以考虑加上-live 参数,进行一次 fgc 回收掉可以被回收内存,方便排查问题。

2年前回复
回复 西湖の风:

嗯嗯,RES 确定是一直在涨 从启动4G一直到20G+;smaps和maps我再观察观察

2年前回复
查看更多