7

我已经开始使用 visualvm 来分析我在 Eclipse 中启动的应用程序。然后我启动了visualvm,它最初给出了可信的结果。

在此处输入图像描述

一段时间后,监视器中出现两个进程,这会消耗大量时间。

在此处输入图像描述

我没有故意引用这些。一段时间后,它们消失了。它们是分析过程的产物吗?我需要担心吗?

我的例程很少出现在配置文件中,主要是他们调用的库。有没有办法显示哪些例程调用了最常用的例程?

4

3 回答 3

13

最好从 CPU 采样开始,如果你不知道代码的哪一部分是慢的。一旦您更好地了解(基于采样结果)正在发生的事情,您就可以只分析应用程序的一部分,这很慢。您需要设置分析根和检测过滤器,并且不要忘记拍摄收集结果的快照。请参阅使用 VisualVM 进行分析,第 1 部分使用 VisualVM 进行分析,第 2 部分,以获取有关分析以及如何设置分析根和检测过滤器的更多信息。

于 2013-06-12T10:38:02.213 回答
3

VisualVM 使用 Java 来执行它的工作。这意味着您将看到一些与它所做的 RMI 调用相关的人工制品。你可以忽略它们。

我使用 YourKit 不这样做,但它不是免费的;)

于 2013-06-11T16:31:19.720 回答
1

VisualVM 将跟踪它正在监视的 java 程序调用的所有方法,因此您的程序或其库之一正在调用这些方法。VisualVM 也连接到它,因此可能会有一些小工件。

至于搜索,可能最简单的方法是按您自己的包进行过滤。底部有一个空间,您可以在其中输入这些内容,这样您就可以看到您自己的哪些方法确实需要时间。另外你应该注意你所在的线程,通常你会想看看你的“主”线程是什么。其他线程很有趣,但并不总是让您最好地了解程序的行为方式。

于 2013-06-11T16:31:42.403 回答