-Xmx6144M -Xms6144M -Xss256k -Xmn600M -XX:NewRatio=2 -XX:CMSInitiatingOccupancyFraction=85

生产环境突然频繁挂掉查看日誌报错OOM

光看日志没法确定原因,于是想把内存dump下来分析

如果setenv.sh脚本存在的话启动tomcat就会去执行这个脚本,这里很适合添加自定义的参数

ps:这个垺务器的内存为8G分配了6G给JVM,接近极限了

ps:这里一定要确认tomcat是否有权限对该文件夹进行修改,比如我这里是用www用户启动的tomcat我用root用户登录垺务器创建了/www/server/tomcat/oom_dump文件夹,默认权限是需要root权限才能访问的setenv.sh文件也一样要注意权限问题。

命令groups [用户名] 可以查询用户所属的组直接输入groups是查詢当前登录用户的组

修改文件夹所属的组和用户,使用命令:

chown 用户名:组名 文件夹名/文件名

果不其然再次OOM。

ps:依据快照文件大小可能需要調整eclipse的配置

1.Histogram可以列出内存中的对象对象的个数以及大小。

 这里我点开最大占用的对象

 发现是嵌套ArrayList里面全是字符串,占用了将近700M(原本服務器设置的最大堆内存为2G)

最终找到了引发OOM的类查找到了原因,业务是加载oss上的文件读取文件内容存入List再转成json返回给前端,但是该文件呔大了

修改接口为只返回文件路径给前端,点击查看才尝试加载文件如果大小超过2M则提示不支持预览,请下载后查看

 本文有不当之處还请各位看官不吝赐教,感谢查看

我要回帖

更多关于 M|X 的文章

 

随机推荐