JAVA总结(一):怎样获取JVM的全局属性

在JAVA代码的跨平台实践中,我们需要知道操作系统的类型及版本,而JVM在启动时,就已经将这些信息内置在System的属性中(可通过System.getProperties()获取)。

所以,如果要获取JVM运行的操作系统信息,只需要通过响应的键值获取即可:

//  获取操作系统的名称
System.getProperty("os.name")
//  获取操作系统的版本
System.getProperty("os.version")

以我的电脑为例,上面的代码将输出如下的结果:

Windows 10
10.0

如果要获取启动的类与参数,则可以使用“sun.java.command”参数(针对SUN的JDK)。

除了可以通过System.getProperties()获取所有的内置键值,还可以通过jinfo命令进行获取,输出的内容不仅包括系统属性,还包括启动参数与命令,如下:

#   获取运行的所有JAVA进程
jps -mlv
#   输出JAVA进程的详细信息,假定上面输出的进程ID为20018
jinfo 20018

输出内容的信息非常丰富,如内存配置信息:

Non-default VM flags: -XX:CICompilerCount=4
-XX:InitialHeapSize=264241152 
-XX:MaxHeapSize=4211081216 
-XX:MaxNewSize=1403518976 
-XX:MinHeapDeltaBytes=524288 
-XX:NewSize=88080384 
-XX:OldSize=176160768 
-XX:+UseCompressedClassPointers 
-XX:+UseCompressedOops 
-XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation 
-XX:+UseParallelGC

在实际应用中,很多第三方库都依赖于系统的全局属性进行操作,如Hibernate的缓存配置文件ehcache.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
     <diskStore path="java.io.tmpdir/ehcache"/>
</ehcache>

最后看一个结合起来进行使用的例子:

Object[] params = new Object[]{System.getProperty("os.name"), System.getProperty("os.version")};
System.out.println( new MessageFormat("本操作系统\"{0}\"的版本是{1}.").format(params));

结论

利用全局属性进行配置信息共享是一种常见的方法,除了包含JVM的全局属性之外,也可能包含应用程序框架的通用属性,如Tomcat的相关属性catalina.base、catalina.home等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值