我正在使用 jvisualvm 分析 Java 应用程序。 jvisualvm 的 CPU 配置文件已将代码的缓慢部分缩小到一种特定方法。但它没有说明该方法的哪一部分很慢。
为了获取更多信息,我尝试使用 Java Monitor(可通过 Eclipse Marketplace 获得)通过 Eclipse 进行调试。 Java Monitor 将附加到应用程序,但不会显示 CPU 统计信息。我不知道为什么。我已经使用以下方法修改了 JVM 选项:
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y
然后我使用以下方法在 Eclipse 中创建配置文件:
Remote Java Application > myapplication
在这里,我选择了我正在分析的项目的源代码。我启动应用程序并等待调试器附加:
Listening for transport dt_socket at address: 8000
我右键单击本地主机下的PID,然后单击“开始监控”
然后在 Eclipse 中按 F11 启动应用程序。它开始运行,但在“属性”下我得到了除 CPU 之外的所有内容。任何想法都非常感谢..
最佳答案
我不知道有哪个 Java 分析器可以告诉您方法的哪一部分大部分时间都在消耗。如果您无法通过查看方法来判断,那么您的方法可能太大而无法理解。尝试将其重构为多种方法。
如果您有大量局部变量,请使用工作对象并将局部变量转换为工作人员的字段。这样,您就可以避免编写具有十几个参数的方法,并且仍然可以缩减过于复杂的方法的大小。
至于为什么Java Monitor不做你想做的事:你需要告诉它要监视哪些包以及要使用哪种分析方法。 See the documentation了解详情。
关于java - Eclipse:Java 监视器不会显示 cpu 统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743071/