了解hs_err_pid <n> .log文件

时间:2016-09-19 22:55:53

标签: java sqlite jvm jetty jvm-crash

有关原始问题,请参阅here

我正在编写Java服务,使用Jetty for Webserving和SQLite进行数据库存储。来源可用here

我发现,尽管该服务从我的笔记本电脑稳定运行,但当部署到EC2实例时,它会崩溃,在启动后1小时到2天之间的输出中没有明显的错误消息。我在启动调用(-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=...)中添加了一些日志记录选项,并获得了this crashlog

这是我第一次遇到这样的文件,乍一看似乎并不是很明显它的哪一部分是指实际的错误,哪些部分只是提供了上下文信息,所以我真的感谢任何理解它的好指南。特别是,它似乎正在尝试与ZipFiles交互,我没有在我的项目中使用它。

  • This answer指向blog的链接,答案评论为-1。
  • This answer链接到某些Oracle documentation,我通常会高兴,但它似乎是一般调试指南 - 无法在hs_err文件中看到任何内容(尽管可能会变成明确进一步阅读)
  • This result from Google声称“无论你执行什么Java代码,JVM都不应该崩溃。如果是这样,那只是一个JVM错误。所以尝试用Sun记录一个有所有细节的缺陷,希望他们会调查“这听起来很绝对 - 我认为我的小玩具项目发现JVM错误的可能性极小!”

2 个答案:

答案 0 :(得分:1)

Java_java_util_zip_ZipFile_getEntry中的崩溃通常是由对.zip个文件的并发访问造成的,例如当存在打开的实例时,文件会被覆盖。

有关详细信息,请参阅JDK-8042197JDK-8031691

BTW,至于原始问题,这里是关于JVM崩溃转储分析的presentation

答案 1 :(得分:0)

查看崩溃日志,您正在解压缩的内容(jar文件或zip文件)导致JVM崩溃。

如果在启动期间发生这种情况,请尝试将其添加到JVM命令行以查看它可能正在处理的文件。

java -verbose:class [more command line]