0

这是我第一次遇到 Java 的这种情况。

Java 只是核心转储,并出现以下错误:

#
# A fatal error has been detected by the Java Runtime Environment:
#
[thread 140213457409792 also had an error]#  Internal Error (safepoint.cpp:300), pid=4327
, tid=140213211031296
#  guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_24-b24
# Java VM: OpenJDK 64-Bit Server VM (20.0-b12 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea6 1.11.4
# Distribution: Ubuntu 12.04 LTS, package 6b24-1.11.4-1ubuntu0.12.04.1
# An error report file with more information is saved as:
# /tmp/hs_err_pid4327.log
#
# If you would like to submit a bug report, please include
# instructions how to reproduce the bug and visit:
#   https://bugs.launchpad.net/ubuntu/+source/openjdk-6/

当我尝试在 mac os 上运行它时,它的核心转储在同一个地方(JRE 必须不同)......所以它必须与代码相关。我不知道如何调试它,这也不例外,那里指定的日志文件没有给我太多信息。任何想法我可以做些什么来找到错误?

4

4 回答 4

1

/tmp/hs_err_pid4327.log 文件应包含核心发生位置的堆栈跟踪。除非您正在进行 JNI 调用,否则它可能是 Java 错误。

于 2012-09-05T23:55:11.853 回答
0

核心转储告诉你应该做什么......

如果您想提交错误报告,请附上如何重现错误的说明并访问: https ://bugs.launchpad.net/ubuntu/+source/openjdk-6/

于 2012-09-05T23:06:21.043 回答
0

快速浏览让我认为这已经被报道了。

该错误本身可能不在您的代码中。这很可能是环境问题 - 可能是 JVM 错误,也可能是一些不寻常的情况,而且很可能两者兼有 - 在奇怪的情况下很少发生的错误。

谷歌搜索消息中的关键元素(例如“safepoint.cpp:100”),查看其他报告,并寻找您的共同点或可能适用的解决方法。在这种情况下,一组报告表明繁重的多线程可能会导致该问题。

于 2012-09-05T23:39:45.620 回答
0

检查您的应用程序目录中是否有 hprof 文件。或者,您可以随意使用

jmap -dump:file=<file_name> <pid>

然后使用 MAT http://www.eclipse.org/mat/分析转储

您还可以考虑此处引用的其他工具:

分析java核心转储的工具

于 2012-09-06T02:41:13.327 回答