我想检查进行一些计算的 JAR 的内存使用情况。为此,我想使用 JVM 监视器。启动 JVM 监视器时,我需要选择运行我的 jar 的 JVM。但问题是我的 JAR 执行速度如此之快(<1 秒)以至于它从未出现在列表中。
有什么方法可以在不立即执行 JAR 的情况下启动 JVM?
JConsole 在 JConsole 启动时查找正在运行的应用程序。然后列表中只会显示当前运行的应用程序端口和主机。但是对于在列表中显示的运行时间非常短的应用程序,在程序执行结束时添加等待是您唯一可以做的选择。
此外,无论 Jconsole 将显示什么内存统计信息,都将包括 Jconsole 的内存占用。所以监控的更好选择是jvisualvm,它也可以显示内存、线程和gc统计信息。
或者,如果要检查代码缓存或编译统计信息,可以使用 -XX:+LogCompilation -XX:+UnlockDiagnosticVMOptions -XX:+PrintCodeCache