java - 在没有 JDK 的情况下生成堆转储 - SIGQUIT 到应用程序?

标签 java process heap-memory dump

知道如何在没有 JDK 的情况下生成 java heapdump 吗? 我能够获取 processid,但我无法直接访问机器,并且没有安装 JDK。

You can alternatively use the JVM parameter -XX:+HeapDumpOnCtrlBreak and send a SIGQUIT signal (-3 kill for Unix and Ctrl-Break for Windows) to the running Java process – the signal will also create a heapdump without aborting the JVM

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

感谢您的帮助

最佳答案

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

 kill -QUIT <pid>

正如您在引文中所描述的。

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

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

关于java - 在没有 JDK 的情况下生成堆转储 - SIGQUIT 到应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29968465/

相关文章:

c# - 在 WinForm 项目选项卡中运行 exe

c# - 回收值(value)类型统一有什么意义吗

heap-memory - 直接堆栈和堆访问;虚拟级还是硬件级?

java - jnlp下载的jar的分解路径是什么?

java - 合并调试资源失败

Java:仅通过计算其哈希码从集合中检索对象

c - C中未初始化的局部变量中包含的值到底是什么?

java - 通过 wsdl 文件生成 Web 服务功能

windows - 如何防止任务管理器杀死我的程序?

c++ - 为什么 malloc/new 捕获调用堆栈?