Windows上的Java堆栈转储

pst*_*ton 22 java windows

我在标准的Windows命令窗口中有一个正在运行的java进程.即我已经运行'cmd'并输入java -jar ...

如果可能的话,我需要能够获得所有线程的完整堆栈转储.

我记得在linux下你可以通过quit命令上的选项向JVM发送消息.

这个文件太阳状态

要在Windows 95或Windows NT平台上生成堆栈跟踪,请在运行Java程序的窗口中输入密钥序列,或单击窗口上的"关闭"按钮.

这显然是错误的,因为关闭终端只会杀死进程并关闭窗口.

Pas*_*ent 36

您可以使用jstack [ option ] pid(如果问题是关于线程转储).使用jps找到你的Java进程的ID.


Set*_*eth 18

键入Ctrl+ Break是在Windows上生成线程转储的正确方法.

你在按Ctrl+ C(=中断)吗?这将发送一个SIGINT,通常会杀死你的进程.


Tho*_*sen 5

在Java 6 JDK +中,jvisualvm可执行文件允许您附加到正在运行的程序(双击其左侧的条目).

连接时,右侧有一个Threads窗格,它有一个Thread Dump按钮.

这为您提供了一个线程转储.

生成后,您可以A)选择全部 - 将线程转储复制并粘贴到文本编辑器.或者B)您可以右键单击左侧树中创建的线程转储并说"另存为".

Notes jvisualvm还允许您拍摄整个应用程序的快照以供以后分析.