JVM进程内存持续增长(已经设置了Xmx以及MaxDirectMemory),不抛OOM,24小时之内被kill掉

说明

物理环境 2G内存

现象描述:

我有个程序(没有源码),底层用到了Netty(不要被误导成一定是NIO的问题,只是说明下可能和DirectMemory有关),没有其他JNI方法,启动参数为

-Xmx1200m -Xms1200m -XX:MetaspaceSize=128M -XX:MaxDirectMemorySize=100m

刚启动的时候,内存保持在1200左右,物理机剩余内存400m(free -m)左右,经过一段时间后(大约一天,期间进行NIO操作),内存持续增长,期间我看过一次,增长到1.5G了,再之后一段时间就被kill掉了,具体被kill掉的时候占用多大内存没注意。

按理说我设置了堆最大内存和直接内存,一般情况下,如果内存不够,会直接抛OOM,不会一直增长啊。堆外内存的剩余部分我觉得不会增长这么多吧,超出设定的内存至少200M,这有点多吧,还是说这是正常现象?

请诸位大佬解惑%%

阅读 5.2k
1 个回答

诸位,散了吧,发现CodeCache默认大小是256m(一口老血)
JMX立竿见影(噗)
先前JMV远程没有配置好,嫌麻烦,就没用(今早试了下,太TM好用了)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题