【问题标题】:Can I force generation of a JVM crash log file?我可以强制生成 JVM 崩溃日志文件吗?
【发布时间】:2010-09-25 03:59:12
【问题描述】:

来自 JVM 崩溃的日志文件包含各种对调试有用的信息,例如加载的共享库和完整的环境。我可以强制 JVM 以编程方式生成其中之一吗?通过执行使其崩溃的代码或其他方式?或者以其他方式访问相同的信息?

【问题讨论】:

    标签: java jvm crash


    【解决方案1】:

    您可以尝试抛出 OutOfMemoryError 并添加 -XX:+HeapDumpOnOutOfMemoryError jvm 参数。这是从 1.6 开始的新工具,McDowell 建议的其他工具也是如此。 http://blogs.oracle.com/watt/resource/jvm-options-list.html

    【讨论】:

    【解决方案2】:

    查看JDK Development Tools,尤其是Troubleshooting Tools,用于转储堆、打印配置信息等。

    【讨论】:

    • 在这些工具中,jstack 似乎是最有前途的,其形式为jstack -l -F -m <pid>(如果进程未挂起,则不需要-F)。即使进程挂起,这也会为您提供混合模式(Java 和本机)和锁定同步器的所有线程堆栈。
    • 或查看docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/… 了解 Oracle Java 8(之前的链接是 6 个,但内容可能差别不大)。
    【解决方案3】:

    我很确定这可以使用 IBM JDK 来完成,因为前段时间我正在使用他们的堆栈分析器。强制转储的一种选择只会导致 outOfMemoryException。

    这些工具可能会提供一些线索http://www.ibm.com/developerworks/java/library/j-ibmtools1/

    【讨论】:

    • 该链接似乎是关于一个仅供 IBM 客户使用的工具,我不是其中之一。
    【解决方案4】:

    在 Ubuntu 20.04.1 LTS 上,我通过以下方式强制 jdk 11 进程上的核心转储

    kill -4 <PID>
    

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2010-11-04
      • 2011-12-21
      • 2019-02-12
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多