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