显示在时间轴中运行的方法的Java探查器?

显示在时间轴中运行的方法的Java探查器?,java,profiling,desktop,Java,Profiling,Desktop,我正在寻找一个java(桌面)探查器,它显示线程时间线,详细说明每个线程在每个时间点执行的方法。Android的traceview的桌面java模拟版会非常好 我想解决的问题是找出我的线程在哀求什么。我看到3个工作线程正在等待mainthread完成某些任务(其中有几个长任务),我需要确定main中最长的任务是什么,以优化(或并行)它 此Netbeans profiler屏幕截图可能解释了我需要回答的问题: 这就是我想看到的。问题是,它是android的一个工具 也许不是真正的答案,但你试过j

我正在寻找一个java(桌面)探查器,它显示线程时间线,详细说明每个线程在每个时间点执行的方法。Android的
traceview
的桌面java模拟版会非常好

我想解决的问题是找出我的线程在哀求什么。我看到3个工作线程正在等待
main
thread完成某些任务(其中有几个长任务),我需要确定
main
中最长的任务是什么,以优化(或并行)它

此Netbeans profiler屏幕截图可能解释了我需要回答的问题:

这就是我想看到的。问题是,它是android的一个工具


也许不是真正的答案,但你试过jstack吗?它是一个应该随JDK一起提供的可执行文件,可以在特定JVM中的每个线程上提供堆栈跟踪。可能会给你你想要的信息。这种方式找到一个合适的时间来收集堆栈跟踪是一个棘手的部分。我可能看到正确的方法,也可能看不到,也没有办法分辨出哪个白痴是对的。假设
等待
,如果删除,将节省50%的时间。然后,如果您运行
jstack
10次,每次都有50%以上的机会显示谁在等待以及为什么要等待。所以问题越大,越容易被发现。它越小,你就越不需要担心。