发布于 2011-01-14 11:55:40
一种相对简单的方法(可能适用于您的情况,也可能不适用于您的情况--取决于行为发生的时间):
当你的应用程序表现出你想要调试的行为时(在本例中,CPU使用率为90-100% ),在进程ID上使用jstack:
http://download.oracle.com/javase/6/docs/technotes/tools/share/jstack.html
检查哪些线程正在运行,以及它们以什么方法发生。如果您这样做几次,可能会相对容易地发现罪魁祸首调用链。然后,您可以只调试该链的入口。
这不一定是最好或最优雅的方法,但它很容易做到,而且可能就是您所需要的。我会从那里开始。这类似于"printf是我用过的最好的调试器“的哲学。
发布于 2011-01-14 17:30:13
VisualVM就是你要找的东西。它附带了较新的JDK,并允许您监视thread usage。
发布于 2013-03-26 22:53:44
另一个显示消耗cpu最多的线程的工具是jvmtop。
https://stackoverflow.com/questions/4687757
复制相似问题