编程文汇

Tunclient有内存泄漏

待查...............

症状: 刚启动时, 内存200M, 几天后达到800M

此时我们需要查看jvm的内存使用情况

jmap -histo:live javapid 1>~/jmap.txt

jmap -histo:live 8821 1>~/jmap.txt

间隔足够的时间, 再保存一个jmap2.txt,

jmap -histo:live 8821 1>~/jmap2.txt

两者对比一下, 就可以找出明显的内存泄漏. tunclient的流量不大, 我要等几天再执行.

已经过去20多天了,并没有再次发生内存泄漏的迹象。
只不过以前的gc用zgc,这次用的G1。
是zgc不够稳定么?

根据jdk 13 在2019.7.29发布的文章看,确实zgc的问题。

# JEP 351: ZGC: Uncommit Unused Memory

之前的版本zgc不会把没有用到的内存归还给操作系统,tunclient本来只使用130M内存,却占用了将近1G内存。换回G1后恢复正常,就说明了这个问题。