这星期被线上JVM内存占用不断增大的问题所困扰,自己提出了一些假设,然后去实施验证都一一失败了,有一些经验和教训在这里分享下. 之所以是尴尬,是最后因为修复了另一个看似不相关的问题导致内存不再上升,但这之间的关系还未明了,还需要继续追踪. 这里讲述一下这次排查的过程. 直接内存的错误判断 服务器的JVM配置为Xmx3g,使用G1,没有设置Xms考虑自然收缩和fgc之后的空间回拢. 没有发生过fgc,且堆内存的增长正常,排除掉堆内存的问题. 使用NMT查看各个区域的内存正常,committed内存…