最近一直在做性能优化方面的工作,填填项目快跑过程中留下的坑。越底层的愈是枯燥的,也越感受到欣喜。下面分享给读者一个java服务吃掉常驻内存(RES)的case,希望能对大家带来收获。
在容器内跑的java服务,参数为
java -Xms128M -Xmx128M -Xmn32M -Xss256K -XX:+UseG1GC
经常莫名的oom killer,如下图
也就是说此进程的内存使用超过了256Mi。
如果要解决这个case,快速修复的办法是调高容器的memory上限。但此服务是个很轻量级的watcher服务,jvm参数xmx设置的是128M,设置之初肯定没有想到内存占用会超过堆内存的2倍。
所以只有找到内存都分配给谁了才能找到真相。。。
1:是否堆内存溢出?
&nb