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

Phi*_*ppe 15 java memory jvm

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

Dor*_*old 21

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

jmap -heap <pid>
Run Code Online (Sandbox Code Playgroud)

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

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


Nat*_*ate 12

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

Runtime.getRuntime().maxMemory();
Run Code Online (Sandbox Code Playgroud)

还成功使用了以下内容:

    MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
    memoryBean.getHeapMemoryUsage().getMax();
Run Code Online (Sandbox Code Playgroud)


rif*_*aff 12

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

jps # shows pids
jps -v <pid> # shows params
Run Code Online (Sandbox Code Playgroud)

记得以启动进程的用户身份运行它,否则它将无法正常运行.

  • 谢谢!这正是我想要的.为了记录,jps是jdk的一部分; 对于我的安装,我在C:\ Program Files\Java\jdk1.6.0_24\bin下找到了它 (2认同)

Joh*_*n29 8

Doron Gold 给出了 Java 8 及以下版本的正确答案。对于 Java 9 及更高版本,您可以通过使用获得相同的信息

jhsdb jmap --heap --pid <pid>
Run Code Online (Sandbox Code Playgroud)