应用环境发生了内存溢出之后应用竟然没停止服务,可能么
fxl545826
2013-11-19
blueyy617 写道 fxl545826 写道 我这边好似没遇到过这个问题,不过应该可能不是你想的那样吧?
确实不是这个原因,当时只是别人发现了这个问题,只是帮忙测试了一下。现在想想应该是R大说的那种类似的问题,因为记得那会用jstat -gccause指令查看时,第一次Full GC时的信息是“Allocation failed”,然后就接着OOM了,之后我就没有去跟进这个问题了,惭愧。不知道楼主现在这个问题有跟进没? 另外,感觉对于这种没有发生JVM Crash的OOM问题,大家一般怎么来进行分析与定位的? 其实R大说的基本差不多了,没有JVM Crash可能是你自己代码去捕获了这个异常,因为OOM是可以被捕获的,例如如果你使用Spring MVC,你在controller层面的代码调用出现了OOM,那么框架会捕获异常,这个时候其实已经发生了内存溢出,不过由于异常被捕获资源回收,JVM就当没发生过一样 |
|
RednaxelaFX
2013-11-19
blueyy617 写道 另外,感觉对于这种没有发生JVM Crash的OOM问题,大家一般怎么来进行分析与定位的?
-XX:+HeapDumpOnOutOfMemoryError 和 OOME记录的stack trace可以结合起来分析。Heap dump用来看有没有什么类型的对象特别多特别大特别不正常,如果都很正常的话就看OOME带的stack trace看抛异常的那个点本身有没有可能在做什么奇怪的事。 |