据我所知,使用VisualVM只能对正在运行的应用程序进行性能分析。有人知道是否有办法使用VisualVM对Java应用程序的启动和启动过程进行分析吗?我相信一定有办法,否则这将是一个重大疏忽。希望我只是没看懂文档。谢谢,p。
使用Eclipse启动器,在主方法中设置一个合适的断点。
然后,在调试模式下启动,启用VisualVM中的分析功能,然后在Eclipse中恢复执行。
这样做无法对类加载等内容进行分析,但对我来说已经足够了。
您是否正在使用"-Xrunjdwp"命令行选项设置分析?如果是,那么该选项有一个"暂停"参数专门用于此目的:
如果目标虚拟机在加载主类之前立即暂停,则为True;否则为False。
以下是我自己配置的示例:
-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
我在使用YourKit分析器时使用了这个方法,但我认为原理是相同的。
我发现Startup Profiler很有帮助:
VisualVM 1.3.6 的 Startup Profiler 插件可以从启动时对本地 Java 5+ 应用程序进行仪器化分析。当对短时间运行的进程进行分析时,它也非常有用。
常见的Java开发环境(NetBeans / Eclipse)都支持直接使用附加的VisualVM执行应用程序。在Eclipse的情况下,您需要安装插件。在NetBeans的情况下,支持已经集成。
即使没有源代码,您仍然可以通过这两个环境运行JAR文件,并因此启动连接到VisualVM的应用程序。
Xrunjdwp
的具体作用和使用方法。建议你去了解一下,看看能否使用它。 - skaffman-Xrunjdwp
无效。请参见 https://dev59.com/yWw05IYBdhLWcg3wrDpS - Raedwald-Xrunjdwp
中的jdwp
代表 Java 调试线协议。请注意单词 Debug。 - Ahmad Tn