了解 hs_err_pid<n>.log 文件
Posted
技术标签:
【中文标题】了解 hs_err_pid<n>.log 文件【英文标题】:Understanding a hs_err_pid<n>.log file 【发布时间】:2017-01-27 17:45:21 【问题描述】:有关原始问题,请参阅here。
我正在编写 Java 服务,使用 Jetty 进行 Webserving 和 SQLite 进行数据库存储。来源可用here。
我发现,尽管该服务在我的笔记本电脑上稳定运行,但在部署到 EC2 实例时,它会在启动后 1 小时到 2 天之间的某个地方崩溃,并且输出中没有明显的错误消息。我在启动调用 (-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=...
) 中添加了一些日志记录选项,并得到了this crashlog。
这是我第一次遇到这样的文件,乍一看似乎不是很明显它的哪个部分指的是实际错误,哪些部分只是提供上下文信息,所以我真的感谢任何理解它的好指南。特别是,它似乎正在尝试与我的项目中没有使用的 ZipFiles 进行交互。
This answer 链接到 blog 在答案 cmets 中为 -1 This answer 链接到一些 Oracle documentation,我通常会对此感到欣喜若狂,但它似乎是一个通用的调试指南——在其中看不到任何关于 hs_err 文件的内容(尽管在进一步阅读时可能会变得清晰)李> This result from Google 声称“无论你执行什么 Java 代码,JVM 都不应该崩溃。如果它发生了,那只是一个 JVM 错误。因此,请尝试向 Sun 记录一个包含所有详细信息的缺陷,希望他们会对此进行调查。”,其中听起来很专制 - 我认为我的小玩具项目不太可能发现 JVM 错误!【问题讨论】:
【参考方案1】:Java_java_util_zip_ZipFile_getEntry
中的崩溃通常是由并发访问 .zip
文件引起的,例如当一个打开的实例存在时,一个文件被覆盖。
详情请参阅JDK-8042197、JDK-8031691。
顺便说一句,至于原始问题,这里有一个presentation 对 JVM 故障转储分析。
【讨论】:
【参考方案2】:查看崩溃日志,您解压的某些内容(jar 文件或 zip 文件)似乎导致了 JVM 崩溃。
如果在启动期间发生这种情况,请尝试将其添加到您的 JVM 命令行以查看它可能正在处理的文件。
java -verbose:class [more command line]
【讨论】:
以上是关于了解 hs_err_pid<n>.log 文件的主要内容,如果未能解决你的问题,请参考以下文章