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

Java 基于时间的多线程调用层次结构,java,profiler,sequence-diagram,call-hierarchy,Java,Profiler,Sequence Diagram,Call Hierarchy,我正在使用eclipse编写java代码。如果我正在调试一些代码,我可以设置一个断点,并在代码遍历每个函数时跟踪,或者我可以回溯。我还可以查看调用层次结构或引用以了解情况。但这还不够 我想有一个某种基于时间的可视化,显示每个线程在进程中所做的事情,从。。。让我们说“点A”(按下界面上的按钮)到“点B”(得到结果)。我想看看以什么顺序调用了哪些类/方法。我想要一个好的方法来可视化从一个方法得到什么样的输出,然后进入另一个方法,从而触发一个新的过程……等等 探查器是这种可视化唯一可用的工具吗?基本上

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

我想有一个某种基于时间的可视化,显示每个线程在进程中所做的事情,从。。。让我们说“点A”(按下界面上的按钮)到“点B”(得到结果)。我想看看以什么顺序调用了哪些类/方法。我想要一个好的方法来可视化从一个方法得到什么样的输出,然后进入另一个方法,从而触发一个新的过程……等等

探查器是这种可视化唯一可用的工具吗?基本上,我希望创建一个动作图或流程图。是否有一些插件或应用程序可以生成这样的东西

编辑:这是我思考的一个例子。。。至少在视觉上: esmodel.sourceforge.net/index.html
它有一些代码引导的流程。但我认为这只是一张静态地图,显示哪些类通向其他类,哪些输入/输出选项可用。我想根据具体情况绘制流程图。

我相信使用探查器将是您的最佳选择。你熟悉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参数中配置的端口。

提供了这样一个视图,它被称为“调用跟踪器”:

为了不记录太多数据,必须非常小心地限制过滤器


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

visualVM只累积了调用堆栈信息,没有按时间顺序排列的信息,而不是问题所要求的时间分辨视图。我想到了更直观的方法:它有一些代码引导的流程。但我认为这只是一张静态地图,显示哪些类通向其他类,哪些输入/输出选项可用。我想根据一个具体的案例来映射它。你觉得AOP怎么样,比如aspectj?拦截您关心的方法调用,并记录所需内容。