多线程基于时间的调用层次结构

时间:2012-03-26 23:51:12

标签: java profiler sequence-diagram call-hierarchy

我正在使用eclipse编写java代码。如果我正在调试一些代码,我可以设置断点并跟随代码遍历每个函数,或者我可以回溯。我还可以查看调用层次结构或引用来获得一个想法。但这还不够。

我想基于时间可视化每个线程在整个过程中的行为...让我们说“点A”(按下界面上的按钮)到“点B”(获取结果)。我想看看哪个类/方法按什么顺序调用。我想要一种很好的方法来可视化来自一种方法的输出类型,并进入另一种方法,该方法将触发一个新进程......等等。

分析器是唯一可用于此类可视化的东西吗?基本上我想要创建一个动作图或流程图。是否有一些插件或应用程序可以生成这样的东西?

编辑:这是我正在思考的一个例子......至少在视觉上:   essmodel.sourceforge.net/index.html 它有一些代码领先的流程。但我认为这只是一个静态地图,表明哪些类可以导致其他类以及哪些输入/输出选项可用。我想根据具体情况绘制流程图。

2 个答案:

答案 0 :(得分:3)

JProfiler提供了这样的观点,它被称为“呼叫追踪者”:

enter image description here

非常谨慎地限制过滤器非常重要,以免记录太多数据。

免责声明:我公司开发JProfiler。

答案 1 :(得分:0)

我相信使用分析器将是您的最佳选择。你熟悉VisualVM吗?它附带JDK(在JDK的bin目录中查找“jvisualvm.exe”),并且能够在正确配置时自动分析本地虚拟机以及远程机器。它确实提供了一个非常流畅的概述,它正在运行什么线程以及它们花费时间的代码,因此我认为您可以轻松地从中完成所需的操作。最重要的是,它是免费的:)

正如我所说,本地剖析是轻而易举的。您只需单独运行JVisualVM.exe,它将自动找到在本地计算机上运行的所有Java进程(您可以从VisualVM为您提供的菜单中选择它们)。如果要远程配置文件,请为您正在运行的任何内容设置以下VM参数:

-Dcom.sun.management.jmxremote.port=[0-65535]
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

然后在VisualVM中,使用运行远程JVM的计算机的主机名以及您在上面第一个VM参数中配置的端口。