10

我正在调试在 Sun 的 JDK 1.4.2_18 上运行的应用程序中的内存泄漏。这个版本似乎支持命令行参数 -XX:+HeapDumpOnCtrlBreak,这可能会导致 JVM 在遇到控制中断时转储堆。如何将其发送到 Linux 机器上的后台进程?看来 kill 信号是应该起作用的方式,但是我 kill -l 没有报告任何明显是 Ctrl-Break 的东西,至少在我的 Ubuntu 机器上是这样。

更新:我用 Sun JDK 1.4.2_18 测试了 Kill -3(_14 是第一个以这种方式转储堆的),并且它有效。创建了一个堆转储文件,并且该进程仍在运行。

4

2 回答 2

16

Ctrl-\ 是 Windows Ctrl-Break 的 UNIX/Linux 等效项。Wikipedia还告诉我,您还可以在 Linux 虚拟控制台上使用 Ctrl-4 或 SysRq(我想您需要一些奇怪的东西才能让普通终端仿真器传递这些按键的表示(通过 ssh/telnet))。

于 2009-05-11T21:38:15.020 回答
10

kill -QUIT 可能会这样做(它会生成一个线程转储,该线程转储由 Windows 上的 ctrl-break 生成。不过,我还没有尝试使用堆转储选项)。

于 2009-05-11T21:53:14.060 回答