我编写了一个java程序,我可以用它生成的jar来运行
java -jar foo.jar
我有兴趣获取jar程序在执行期间请求的最大内存大小。实际上,为了做到这一点,我只看内存管理(如htop
),但它不准确。
我想知道在启动jar时是否有一个特殊参数可以在执行结束时获取此类信息?
答案 0 :(得分:3)
您是否尝试过visualVM
这个免费且功能强大的工具来跟踪Java性能应用程序,它会向您显示您的JVM从物理内存中提交了多少,以及当前JVM的应用程序总内存正在运行,还有一些功能:
它带有JDK包,因此您无需安装它,有关详细信息,请查看this
在您的情况下,您可以执行以下操作:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=8484 -Dcom.sun.management.jmxremote.ssl=false -jar foo.jar
打开visualVM
,然后选择File -> Add JMX connection
,然后键入您的主机IP和您在参数“我们的情况下为8484”中指定的端口,分隔为:,例如{{1那么你准备好了。