Weblogic 10.3.6在OutOfMemoryError上生成空的heapdump

时间:2018-09-05 08:01:32

标签: weblogic weblogic11g heap-dump

由于服务器上部署的Web应用程序生成了OutOfMemoryError,我试图从Weblogic 10.3.6生成完整的堆转储。

我已经设置了以下启动脚本:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump

发生OutOfMemoryError时,Weblogic在/path/to/heapdump文件夹中生成一个空的hprof文件(大小为0字节),但没有任何反应:即使无法访问服务器也仍处于RUNNING模式不再。 Java进程仍然存在,但是处理器的使用率为0%。

即使server.out日志似乎完全冻结,也没有任何OutOfMemoryError的痕迹。

配置出了什么问题?

3 个答案:

答案 0 :(得分:1)

可能您可以使用Java Flight Recorder来保存事件并检查哪些对象正在生成OOM。

(任何探查器也应该工作)。

答案 1 :(得分:0)

在那儿:(。我记得当时我们发现它有点合逻辑,因为没有足够的内存来进行正常操作,JVM也无法自动找到足够的内存来创建堆转储。如果内存为我服务好吧,当时我们做了两件事来调试内存泄漏:首先,我们很“幸运”,使得问题定期发生,因此可以进行密切的手动监视(监视gc.log以查找重复的FullGC和监视控制台中的“性能”选项卡。)知道问题何时开始,我们正在执行kill -3来手动获取转储。我们还幸运地使用了jstack {PID}(在Linux上为JDK 1.6)。当时,开发人员能够识别内存泄漏。希望能有所帮助。

答案 2 :(得分:0)

好的,您的配置看起来还不错。.您可能想检查weblogic进程用户是否有权编辑堆转储文件。

您可以使用Java工具进行堆转储: JAVA_HOME / bin / jmap -dump:format = b,file = the_file的路径

OR

%JROCKIT_HOME%\ bin \ jrcmd hprofdump filename =文件的路径