我试图找出是否有办法从正在运行的Java进程中确定的JVM启动属性。 具体来说,我试图找出参数,如-Xmx(最大堆大小)和-XX其中:MaxPermSize参数存储。 我运行Sun的JVM 1.6。
如果你想知道我为什么要做到这一点,我有一个数字,可能会或可能不会被正确配置JVM Web服务器的,我想它添加到启动代码检查。 这是很容易让我在一块Java代码被部署无处不在比手动查找并检查所有的JVM启动文件的检查。 现在是好还是坏的JVM配置文件是不是我们的构建过程的一部分或签入源代码控制。
我试图找出是否有办法从正在运行的Java进程中确定的JVM启动属性。 具体来说,我试图找出参数,如-Xmx(最大堆大小)和-XX其中:MaxPermSize参数存储。 我运行Sun的JVM 1.6。
如果你想知道我为什么要做到这一点,我有一个数字,可能会或可能不会被正确配置JVM Web服务器的,我想它添加到启动代码检查。 这是很容易让我在一块Java代码被部署无处不在比手动查找并检查所有的JVM启动文件的检查。 现在是好还是坏的JVM配置文件是不是我们的构建过程的一部分或签入源代码控制。
尝试:
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参数文件中的设置。
你会发现各种良好的sumary JVM工具在这篇文章中使用 (从“达斯汀的软件开发Cogitations和猜测” ),包括Java应用程序启动链接:
ManagementFactory.getRuntimeMXBean(
调用 getInputArguments()
的javadoc 此技术利用可用的平台的MXBean的优点,因为J2SE 5 (在溶液中加入定制的MXBean支持的Java SE 6 )。
对使用Sun的JVM时,可用的JVM参数的信息,两个有用的来源是:
- JVM选项的集合构成和
- 查尔斯·纳特的收藏热点JVM旗帜 。
这两种资源列表,并描述了一些/全部不推荐换了休闲开发商双重的
X
参数(-XX
)可用。
在Java 7或更高版本是一样简单
java -XshowSettings:all