我已经开始使用visualvm来分析我在Eclipse中启动的应用程序。然后我启动visualvm,最初给出了可信的结果。
一段时间后,显示器中出现两个进程,耗费大量时间。
我没有故意调用这些。过了一会儿,他们消失了。它们是剖析过程中的人工制品吗?我需要担心吗?
我的例程中很少出现在个人资料中,主要是他们调用的图书馆。有没有办法显示哪些例程调用最常用的例程?
答案 0 :(得分:10)
如果您不知道代码的哪一部分很慢,最好从CPU采样开始。一旦您更好地了解(基于抽样结果)发生了什么,您可以只分析您的应用程序的一部分,这很慢。您需要设置分析根和检测过滤器,并且不要忘记拍摄收集结果的快照。请参阅Profiling With VisualVM, Part 1和Profiling With VisualVM, Part 2以获取有关分析以及如何设置分析根和检测过滤器的更多信息。
答案 1 :(得分:3)
VisualVM使用Java来执行它的工作。这意味着您将看到一些与其制作的RMI调用相关的人工制品。你可以忽略它们。
我使用不执行此操作的YourKit,但它不是免费的;)
答案 2 :(得分:1)
VisualVM将跟踪它正在监视的java程序调用的所有方法,因此您的程序或其中一个库正在调用这些方法。 VisualVM也连接到它,因此可能会有一些小的工件。
至于搜索,可能最简单的方法是用你自己的包过滤。底部有一个空间,您可以输入这些空间,这样您就可以看到自己的方法确实需要时间。另外你应该注意你所在的线程,通常你会想看看你的“主”线程。其他线程很有趣,但并不总能让您最好地了解程序的行为。