问题描述:
系统前台内存实例溢出,堆内存突然陡增。发现此问题时,马上联系运维获取jmap -dump:file=/dump.bin 32665,获取堆内存信息;
但是由于内存占用问题,出现下面异常信息,导致获取队内存信息失败;
Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.tools.jmap.JMap.runTool(JMap.java:179) at sun.tools.jmap.JMap.main(JMap.java:110) Caused by: sun.jvm.hotspot.debugger.UnmappedAddressException
这样的获取方式太慢,获取失败,而如果实例挂掉后,内存信息不能dump。
问题处理:
配置jvm启动参数, -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/home/tomcat/xxxx.com.该参数当JVM发生OOM时,自 动生成DUMP文件,如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。
当再次发生溢出时,联系运维获取改hprof文件,可用Eclipse Memory Analysis,或者jprofile打开分析;
eclipse:MAT插件安装http://www.eclipse.org/mat/downloads.php
使用技巧,参见博文:http://mikewang.blog.51cto.com/3826268/1254306
分析日志文件
TaskInfoRelation对象实例较多, 实例到300多万个,分析前台什么地方会做关于这表的查询,而舆情前台在任务加载时,会获取该信息,但是这么多实例显然是不正常的,一定是某个地方查询了所有扫描了全表;
总结:
1.对于实体,除去insert、update、batchInsert、delete操作外其他任务接口,应该明确定义接口职责,禁止使用VO对象动态拼接where条件;
2.jvm实例配置参数
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/home/tomcat/xxxx.com,第一次出现
OutOfMemoryError时,及时定位修复
相关推荐
搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space 资料整理
报错 java.lang.OutOfMemoryError: PermGen space 报错 java.lang.OutOfMemoryError: Java heap 启动报错java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler JAVA_OPTS="-server -Xms800m ...
java.lang.OutOfMemoryError: Java heap space 解决方法
java解决nested exception is java.lang.OutOfMemoryError Java heap space 解决OOM
java.lang.OutOfMemoryError处理错误
java.lang.OutOfMemoryError: PermGen space 解决方案
Myeclipse下java.lang.OutOfMemoryError Java heap space的解决
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:268) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain....
编译时出现java.lang.OutOfMemoryError Java heap space异常.
java.lang.OutOfMemoryError: PermGen space及其解决方法,解决项目太大tomcat内存溢出
NULL 博文链接:https://geyubin.iteye.com/blog/779330
内存不足OOM java.lang.OutOfMemoryError.
java.lang.OutOfMemoryError: Java heap space 解决方法
记录java.lang.OutOfMemoryError:Java heap space的情况 文章内容: 一.问题描述+原因分析+解决方案 二.JVM调优说明 三.Tomcat添加到jvisualvm监控
Eclipse中通过Tomcat运行J2EE项目java.lang.OutOfMemoryError PermGen space的解决方案
java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法
Tomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的...
Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError),内附解决方案!
tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space 参考该文档可快速解决内存溢出的问题,服务器:tomcat