【发布时间】:2011-09-30 14:39:34
【问题描述】:
我正在创建一个 NSIS 脚本,可以在安装过程中设置正在安装的 java 应用程序的 Xmx 值。我不确定这个参数是否设置正确。有没有办法在应用程序运行时检查配置的 Xmx 值?
【问题讨论】:
我正在创建一个 NSIS 脚本,可以在安装过程中设置正在安装的 java 应用程序的 Xmx 值。我不确定这个参数是否设置正确。有没有办法在应用程序运行时检查配置的 Xmx 值?
【问题讨论】:
就我而言,jmap 是我能找到的最佳解决方案:
jmap -heap <pid>
上面的命令显示了完整的堆配置+当前使用情况。
jmap 命令包含在 bin 目录下的 jdk 中。
【讨论】:
便宜又脏(不确定可靠性):
Runtime.getRuntime().maxMemory();
还成功使用了以下内容:
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
memoryBean.getHeapMemoryUsage().getMax();
【讨论】:
jps 是一个很好的解决方案,运行即可
jps # shows pids
jps -v <pid> # shows params
记得以启动该进程的用户身份运行它,否则它将无法正常工作。
【讨论】:
Doron Gold 给出了 Java 8 及以下版本的正确答案。对于 Java 9 及更高版本,您可以使用
获得相同的信息jhsdb jmap --heap --pid <pid>
【讨论】:
我是 kill -3 的忠实粉丝,它会为您提供有关当前内存和垃圾收集以及所有线程堆栈的详细信息。
【讨论】: