我正在使用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,我得到了一切。任何想法都非常赞赏..
答案 0 :(得分:1)
我不知道任何可以告诉你方法的哪个部分在大多数时间吃掉的Java分析器。如果您不能通过查看方法来判断,那么您的方法可能太大而无法理解。尝试将其重构为几种方法。
如果您有许多局部变量,请使用worker对象并将局部变量转换为worker的字段。这样,您可以避免使用十几个参数编写方法,并且仍然可以使用过于复杂的方法来调整大小。
至于为什么Java Monitor没有做你想做的事情:你需要告诉它要监控哪些软件包以及使用哪种分析方法。 See the documentation了解详情。