如何告诉visualvm在哪里找到我的源代码?

时间:2014-07-07 19:22:15

标签: java visualvm

我正在运行VisualVM来分析一个简单的Java应用程序。当我双击分析窗格中的方法(希望获得更多详细信息)时,它会显示“没有为类找到源......”。我知道消息来源在哪里。我如何告诉VisualVM在哪里看?

2 个答案:

答案 0 :(得分:7)

我在显示错误对话框时进行了VisualVM进程的堆栈转储,问题似乎在方法openSourceImpl中的类org.netbeans.modules.profiler.api.GoToSource中。

此方法尝试使用GoToSourceProvider服务提供程序接口的任何已注册实现加载源,并在没有任何人设法显示相关源代码时显示错误消息。

我的猜测是VisualVM的当前默认版本没有注册任何GoToSourceProviders,因此总是无法查找源代码。

从软件包名称看,GoToSourceProvider是用于分析器模块的SPI,但我无法找到有关如何实现此SPI的任何文档,并且它似乎不会出现成为VisualVM扩展点的一部分。

答案 1 :(得分:0)

Hello在NetBeans IDE中实现了与VisualVM几乎相同的东西(我使用的是8.0.2)。您只需点击Profile->Project Profile即可。点击后显示源代码就是在那里工作。但不幸的是,没有更详细的信息,哪些代码行占用了大部分时间。

为此,我将修改代码,我将使用

手动计算
long beg = System.nanoTime() 
lineISuspect
sum += System.nanoTime() - beg;