用于跟踪JVM在应用程序中当前正在执行哪个方法的工具?

时间:2016-07-29 06:35:32

标签: java jvm

我必须了解一个不是由我编写的旧的大型java代码库。

要跟踪任何流,如果我知道在该流中调用的任何类,我抛出一个Exception(如下所示)来获取到控制台的堆栈跟踪,以了解到目前为止调用的方法并继续

        try {
            throw new Exception();
        } catch (Exception e) {
            e.printStackTrace();
        }

这在一定程度上对我有所帮助,但我对其他流程完全失明,我不知道该流程中的入口/中间/退出点。

我想知道是否有任何工具或机制可以告诉JVM当前正在执行什么?

1 个答案:

答案 0 :(得分:0)

如果您想了解JVM中的哪些线程正在执行,您可以通过kill -3 pid捕获线程转储并观察stdout,或者使用jconsole。您可以捕获几个彼此相距几秒钟的转储,这样您就可以感受到“当前”功能如何从一个地方移动到另一个地方。

如果要跟踪/记录并了解函数的进出值,可以使用Jackplay