如何检查正在运行的Java应用程序的已配置Xmx值

时间:2011-09-30 14:39:34

标签: java memory jvm

我正在创建一个NSIS脚本,其中可以在安装过程中设置要安装的Java应用程序的Xmx值。我不确定这个参数是否设置正确。有没有办法在应用程序运行时检查配置的Xmx值?

5 个答案:

答案 0 :(得分:18)

就我而言,jmap是我能找到的最佳解决方案:

jmap -heap <pid>

以上命令显示完整堆配置+当前使用情况。

jmap命令包含在bin目录中的jdk中。

答案 1 :(得分:11)

便宜又脏(不确定可靠性):

Runtime.getRuntime().maxMemory();

还成功使用了以下内容:

    MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
    memoryBean.getHeapMemoryUsage().getMax();

答案 2 :(得分:11)

jps是一个很好的解决方案,只需运行

jps # shows pids
jps -v <pid> # shows params

请记住以启动该过程的用户身份运行它,否则它将无法正常工作。

答案 3 :(得分:3)

我是杀-3的忠实粉丝&lt; pid&gt; ,它将为您提供有关当前内存和垃圾收集的详细信息以及所有线程的堆栈。

答案 4 :(得分:0)

Doron Gold为Java 8及以下版本提供了正确答案。对于Java 9及更高版本,您可以通过使用

获得相同的信息
jhsdb jmap --heap --pid <pid>