前提
本地测试没毛病
生产
调用一个吃内存的方法后,tomcat崩溃
catalina日志文件没有任何日志信息
原因分析
打开/var/log/messages文件 这个为linux系统日志文件
我这里为
Dec 7 21:02:45 iZrj97s23bov6rewm9af7aZ kernel: Out of memory: Kill process 22692 (java) score 230 or sacrifice child
Dec 7 21:02:45 iZrj97s23bov6rewm9af7aZ kernel: Killed process 22692 (java) total-vm:2676800kB, anon-rss:445468kB, file-rss:0kB, shmem-rss:0kB
内存溢出
这个问题我昨天困扰了我一天
这个out if memory在我这里一共显示24次 说明我测试了24次
开发环境12G内存
生产环境2G内存
调用的吃内存的方法是 lucene分词建索引 这个方法启动要占好几百M内存
能找到/var/log/messages这个文件基本上问题就解决一半了 关键没人会知道问题竟然是内存不够
参考: