使用Samurai进行线程转储分析

时间:2013-09-01 23:33:59

标签: java multithreading jvm visualvm thread-dump

我尝试使用Samurai来分析我的线程转储。

我从Java VisualVM中保存了一个线程转储,它提供了一个.tdump文件。 然后我用

开始了Samurai
java -jar samurai.jar

我将我的线程转储文件拖入Samurai并在控制台中出现以下错误:

java.lang.ArrayIndexOutOfBoundsException: 0
    at samurai.swing.ThreadDumpPanel$7.run(ThreadDumpPanel.java:634)
    at samurai.swing.LogRenderer.invokeLater(LogRenderer.java:78)
    at samurai.swing.ThreadDumpPanel.updateHtml(ThreadDumpPanel.java:629)
    at samurai.swing.ThreadDumpPanel.access$300(ThreadDumpPanel.java:61)
    at samurai.swing.ThreadDumpPanel$8.onFullThreadDump(ThreadDumpPanel.java:665)
    at samurai.core.ThreadDumpExtractor.fullThreadDumpEnded(ThreadDumpExtractor.java:175)
    at samurai.core.ThreadDumpExtractor.finish(ThreadDumpExtractor.java:151)
    at samurai.swing.ThreadDumpPanel.logEnded(ThreadDumpPanel.java:688)
    at samurai.tail.MultipleLogWatcher.logEnded(MultipleLogWatcher.java:96)
    at samurai.tail.SingleLogWatcher.logEnded(SingleLogWatcher.java:212)
    at samurai.tail.SingleLogWatcher.checkUpdate(SingleLogWatcher.java:123)
    at samurai.tail.Tailer.run(Tailer.java:56)
Saving configuration.[/Users/test/.samurai.properties]

如果没有错误让Samurai正常运行我该怎么做?

2 个答案:

答案 0 :(得分:0)

我无法解决Samurai问题,您可以尝试将TDA plugin用于VisualVM。 TDA应该能够提供与Samurai相同的信息。

答案 1 :(得分:0)

诸如fastThread.io之类的工具可以将所有线程的堆栈跟踪分组,并生成一个调用堆栈树。您可以在该树上下钻并向上浏览以查看关键代码路径。以下是“ fastThread.io”生成的示例调用堆栈树。欢迎您到这里查看实时报告中的调用堆栈树。

How to identify critical code path?