Eclipse:Java 监视器不会显示 cpu 统计信息

Eclipse: Java Monitor won't show cpu statistics

我正在使用 jvisualvm 分析 java 应用程序。 jvisualvm 的 CPU 配置文件已将代码的缓慢部分缩小到一种特定方法。它并没有说方法的哪一部分很慢。

为了获得更多信息,我尝试使用 Java Monitor(可通过 Eclipse Marketplace 获得)通过 Eclipse 进行调试。 Java 监视器将附加到应用程序,但不会显示 CPU 统计信息。我不知道为什么。我使用以下方法修改了 JVM 选项:

-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y

然后我使用以下方法在 Eclipse 中创建配置文件:

Remote Java Application > myapplication

这里我 select 我正在分析的项目的源代码。我启动应用程序并等待调试器附加:

Listening for transport dt_socket at address: 8000

我右击本地主机下的PID,点击'Start Monitoring'

然后在 Eclipse 中按 F11 启动应用程序。它从 运行 开始,但在 'Properties' 下我得到了除 CPU 之外的所有内容。非常感谢任何想法..

我不知道有哪个 Java 分析器可以告诉您方法的哪一部分大部分时间都在吃东西。如果你不能通过查看方法来判断,那么你的方法可能太大而无法理解。尝试将其重构为几种方法。

如果你有很多局部变量,使用worker对象,把局部变量变成worker的字段。这样,您就可以避免编写带有十几个参数的方法,并且仍然可以减少过于复杂的方法。

至于为什么Java Monitor doesn't do what you want: You need to tell it which packages to monitor and which profiling method to use. See the documentation详情