如何在执行期间获取jar使用的内存空间

时间:2014-02-02 14:19:21

标签: java memory-management jar

我编写了一个java程序,我可以用它生成的jar来运行

java -jar foo.jar

我有兴趣获取jar程序在执行期间请求的最大内存大小。实际上,为了做到这一点,我只看内存管理(如htop),但它不准确。

我想知道在启动jar时是否有一个特殊参数可以在执行结束时获取此类信息?

1 个答案:

答案 0 :(得分:3)

您是否尝试过visualVM这个免费且功能强大的工具来跟踪Java性能应用程序,它会向您显示您的JVM从物理内存中提交了多少,以及当前JVM的应用程序总内存正在运行,还有一些功能:

  • 提供CPU分析。
  • 提供有关主题的所有信息。
  • 提供JVM堆和内存状态。
  • 提供有关GC活动的信息。

它带有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那么你准备好了。