【问题标题】:Generate heap dump without JDK - SIGQUIT to application?在没有 JDK 的情况下生成堆转储 - SIGQUIT 到应用程序?
【发布时间】:2015-07-10 04:46:19
【问题描述】:

知道如何在没有 JDK 的情况下生成 java heapdump 吗? 可以获取processid,但是无法直接访问机器,也没有安装JDK。

您也可以使用 JVM 参数 -XX:+HeapDumpOnCtrlBreak 并发送一个 SIGQUIT 信号(-3 kill 用于 Unix 和 Ctrl-Break 用于 Windows) 到正在运行的 Java 进程——该信号还将创建一个 堆转储而不中止 JVM

有没有更简单的方法?以及如何向进程发送 SIGQUIT?

感谢您的帮助

【问题讨论】:

    标签: java process heap-memory dump


    【解决方案1】:

    如果您仍然可以通过 SSH/telnet 访问,您可以使用:

     kill -QUIT <pid>
    

    正如你在报价中所描述的那样。

    通过 JMX 访问应用程序的其他选项,即 jconsole 或 jvisialvm

    要使用 JMX,您需要通过应用程序的命令行启用 JMX

    【讨论】:

    • 我在 Windows 上,有什么可以用的吗?它只是 Windows 和 JRE(没有 JDK)。
    • 嗯,我明白了,Windows 上没有 SIGQUIT。所以我认为您有以下选择:1)如果您可以访问 WIndows 上的应用程序命令窗口 - 然后在其中按 ctrl-break 2)在您的代码中实现自定义 JMX 服务器,通过 HTTP 访问它并编写自定义函数打印堆栈跟踪 3)安装 JDK(如果可以)
    猜你喜欢
    • 2014-01-16
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多