【问题标题】:Understanding a hs_err_pid<n>.log file了解 hs_err_pid<n>.log 文件
【发布时间】: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 错误!

【问题讨论】:

    标签: java sqlite jvm jetty jvm-crash


    【解决方案1】:

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

    详情请参阅JDK-8042197JDK-8031691

    顺便说一句,至于原始问题,这里有一个presentation 对 JVM 故障转储分析。

    【讨论】:

      【解决方案2】:

      查看崩溃日志,您解压的某些内容(jar 文件或 zip 文件)似乎导致了 JVM 崩溃。

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

      java -verbose:class [more command line]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 2015-09-08
        • 2021-02-09
        • 2018-02-11
        • 2019-10-17
        • 2011-11-27
        • 2011-12-12
        相关资源
        最近更新 更多