如何在未在控制台中运行的Windows上获取Java进程的线程和堆转储

我有一个从控制台运行的Java应用程序,该控制台又执行另一个Java进程。我想获得该子进程的线程/堆转储。


在Unix上,我可以这样做,kill -3 <pid>但是在Windows AFAIK上,获取线程转储的唯一方法是在控制台中按Ctrl-Break。但这只给了我父进程而不是子进程的转储。


还有另一种方法来获得该堆转储吗?


HUWWW
浏览 496回答 3
3回答

蝴蝶不菲

除了使用提到的jconsole / visualvm,您还可以jstack -l <vm-id>在另一个命令行窗口上使用并捕获该输出。可以使用任务管理器(它是Windows和UNIX上的进程ID)或使用来找到<vm-id> jps。两者jstack和jps都包含在Sun JDK版本6和更高版本中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java