我正在试图弄清楚是否有办法从正在运行的java进程中确定JVM启动属性。具体来说,我试图找出存储-Xmx(最大堆大小)和-XX:MaxPermSize等参数的位置。我正在运行Sun的1.6 jvm。
如果您想知道我为什么要这样做,我有许多JVM网络服务器,可能正确配置也可能没有,我想将其添加到启动代码检查中。检查一下到处部署的java代码比手动查找和检查所有jvm启动文件要容易得多。现在,jvm配置文件的好坏不是我们构建过程的一部分,也不是检查到源代码控制。
答案 0 :(得分:53)
尝试:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
public void runtimeParameters() {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
List<String> aList = bean.getInputArguments();
for (int i = 0; i < aList.size(); i++) {
System.out.println( aList.get( i ) );
}
}
应显示所有JVM参数。
注意:我们在VCS中也没有JVM参数,但在数据库中,我们自己的生成器中的启动器读取。这样,我们可以远程更改这些值,而无需重新部署JVM参数文件设置。
你会发现各种JVM tools to use in this article(来自"Dustin's Software Development Cogitations and Speculations"),包括。{ Java Application Launcher链接到:
ManagementFactory.getRuntimeMXBean(
)致电getInputArguments()
javadoc 此技术利用自J2SE 5以来可用的Platform MXBeans(Java SE 6中添加了自定义MXBeans支持)。
使用Sun的JVM时,有关JVM参数的两个有用信息来源是:
- A Collection of JVM Options和
- Charles Nutter的Favorite Hotspot JVM Flags。
这两个资源都列出并描述了一些/所有不推荐用于休闲开发者的双
X
参数(-XX
)。
答案 1 :(得分:10)
使用Java 7或更高版本,它就像
一样简单 java -XshowSettings:all