引起内存溢出的常见原因大致有以下几种:
1.内存中加载的数据量过大,一次从数据库取出过多数据导致内存溢出;
2.集合类中有对对象的引用,使用完后没有及时清空,使得 JVM 不能回收;
3.代码中存在死循环或循环产生过多重复的实体对象;
4. 启动参数的内存值设定过小导致内存不够用;
遇到问题头大,怎么可能是我的问题,测试环境没有问题!你是不是常常这样说,
但是生产有问题还得看啊,大家等着你解决呢。
一筹莫展:
1、打印详细的log日志,以便后续检索logserver 查找问题
2、jvm 配置 oom异常,输出文件java__heapDump.hprof
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/tomcat/logs
3、根据步骤2的文件利用分析工具JProfiler,分析原因