我有一段正在运行的Java软件出现了卡顿。我想要查看其中的情况,但不知道如何做。
是否有一种工具可以输入PID并告诉我每个线程当前所在位置,以及一些变量的值?我正在使用Linux操作系统。
我大致知道问题是什么,但仍有几种可能的情况,因此确定问题所在将会很好。
由于错误只在几天后才会出现,而且在调试过程中从未出现过,因此这是一个了解问题的独特机会。
有什么想法吗?
我有一段正在运行的Java软件出现了卡顿。我想要查看其中的情况,但不知道如何做。
是否有一种工具可以输入PID并告诉我每个线程当前所在位置,以及一些变量的值?我正在使用Linux操作系统。
我大致知道问题是什么,但仍有几种可能的情况,因此确定问题所在将会很好。
由于错误只在几天后才会出现,而且在调试过程中从未出现过,因此这是一个了解问题的独特机会。
有什么想法吗?
kill -3 PID
,其中PID是您的进程ID。这将导致线程转储输出到程序的标准输出。这将显示每个线程正在做什么,但不会提供有关变量的任何信息。无论如何,线程转储非常有用,建议您从那里开始。如果您仍然无法解决问题,可以使用类似jmap(JVM工具,免费但更难使用)或YourKit(付费产品但非常好)来获取内存快照,并检查变量。