获取你的JVM系统环境属性
Java的"Writer once,run anywhere"口号的确让我们领略到了Java的神奇,也成为SUN宣传Java的金字招牌。拂开这层神秘的面纱,我们不难发现其核心是运行在各种操作系统中的JVM(Java虚拟机)在发挥着重要的作用,Java虚拟机允许我们的纯java类可以达到"一次编写,到处运行"。每个安装在不同操作系统的Java虚拟机负责着Java程序与操作系统之间的工作,因此每个Java虚拟机的系统环境属性是不同的,我们可以通过访问Java虚拟机的系统属性来获知一些关于当前操作系统的一些基本信息,这些信息的价值有时是非常重要的。
标准SDK中提供了java.lang.System类,这个类定义了一个对系统设备(包括系统属性和系统输入输出数据流)的、与平台无关的接口。方法getProperties()返回一个java.util.Property对象,对象中存放了JVM的系统属性列表,我们可以通过这个列表来得到java虚拟机的一些系统属性。
下面的例子中,将介绍如何实现获取JVM系统属性的功能
类设计
设计SystemInfo类,用来获取系统的属性,并打印输出到标准输出。首先我们将设计一个getSystemProperty()方法,该方法将调用java.lang.System.getProperties()返回一个系统属性列表,在main()函数中,将系统属性的关键字和属性描述放到一个Hashtable结构中,通过遍历这个结构,获取系统属性值。
//package com.cn-java;
import java.lang.System;
import java.util.Properties;
import java.util.Hashtable;
import java.util.Enumeration;
public class SystemInfo{
//存放JVM获得的系统属性
static private Properties _property;
//Main function
public static void main(String[] args){
getSystemProperty();
Hashtable hashKey;
hashKey=new Hashtable();
//将系统信息的关键字和标题放到hashtable
hashKey.put("java.home", "Java安装目录 ");
hashKey.put("java.class.path", "装载类的路径 ");
hashKey.put("java.specification.version", "Java API 规范的版本 ");
hashKey.put("java.specification.vendor", "Java API 规范的厂商 ");
hashKey.put("java.specification.name", "Java API 规范的名称 ");
hashKey.put("java.version", "Java API 实现的版本 ");
hashKey.put("java.vendor", "Java API 实现的厂商 ");
hashKey.put("java.vendor.url", "Java API 规范厂商的URL");
hashKey.put("java.vm.specification.version", "Java虚拟机规范的版本 ");
hashKey.put("java.vm.specification.vendor", "Java虚拟机规范的厂商 ");
hashKey.put("java.vm.specification.name", "Java虚拟机规范的名称 ");
hashKey.put("java.vm.version", "Java虚拟机实现的版本 ");
hashKey.put("java.vm.vendor", "Java虚拟机实现的厂商 ");
hashKey.put("java.vm.name", "Java虚拟机实现的名称 ");
hashKey.put("java.class.version", "Java类文件格式的版本 ");
hashKey.put("os.name", "主机操作系统的名称 ");
hashKey.put("os.arch", "主机操作系统的体系结构");
hashKey.put("os.version", "主机操作系统的版本 ");
hashKey.put("file.separator", "平台目录的分隔符 ");
hashKey.put("path.separator", "平台路径的分隔符 ");
hashKey.put("line.separator", "平台文本行的分隔符 ");
hashKey.put("user.name", "当前用户的帐户名称 ");
hashKey.put("user.home", "当前用户的根目录 ");
hashKey.put("user.dir", "当前工作目录 ");
Enumeration enum;
String propertyKey;
enum=hashKey.keys();
while(enum.hasMoreElements()){
propertyKey=(String)enum.nextElement();
System.out.println((String)hashKey.get(propertyKey)
+":"+_property.getProperty(propertyKey));
}
}
/**
* 获得系统属性列表
* @return Properties
*/
static public Properties getSystemProperty(){
_property=System.getProperties();
return _property;
}
}
分享到:
相关推荐
在Java编程中,获取系统属性是一项重要的任务,它允许开发者获取关于操作系统、JVM以及用户环境的详细信息。Java提供了一个名为`Properties`的类,它继承自`Dictionary`,进一步扩展了`Hashtable`,用于处理键值对,...
系统属性则是Java运行时环境(JRE)提供的、关于Java虚拟机(JVM)及其配置的属性信息。在Java中,我们通常使用System类提供的方法来获取这些信息。 获取环境变量的方法主要有两种。第一种是使用System.getEnv()...
在Java世界中,JVM(Java虚拟机)是运行所有Java应用程序的基础,它为每个应用程序提供了一个独立的运行环境。Spring Boot是一个简化Spring应用开发的框架,它通过提供默认配置和starter项目,使得构建微服务变得...
在Java编程中,获取系统参数是一项基本任务,用于了解运行Java程序的环境信息。Java提供了`java.lang.System`类的`getProperties()`方法来获取这些信息。这个方法返回一个`Properties`对象,该对象包含了关于Java...
2. 扩展类加载器(Extension ClassLoader):负责加载JAVA_HOME\lib\ext目录中的,或通过java.ext.dirs系统变量指定路径中的类库。 3. 应用程序类加载器(Application ClassLoader):负责加载用户路径(classpath)...
它允许程序在运行时获取类的信息(如类名、属性、方法等),并动态调用方法或访问属性。反射的应用场景包括: 1. 动态创建对象:通过Class类的newInstance()方法创建对象。 2. 动态调用方法:通过Method类的invoke...
"Java获取自身运行相关信息"的主题涵盖了如何使用Java内置的类和方法来获取关于Java虚拟机(JVM)以及相关系统属性的详细信息。下面将详细介绍这些知识点: 1. **Java虚拟机名(JVM Name)**: 通过`java.lang....
其中`libname`为本地代理库文件名,如`hprof`,可用于获取JVM的运行情况,包括CPU、内存、线程等运行数据,并可以输出到指定文件中。`options`是传递给本地库的参数,多个参数间用逗号分隔。在不同的操作系统上,...
**用途**:列出当前系统中正在运行的所有HotSpot虚拟机进程,并显示每个进程的PID及主类名。 **命令格式**: ``` jps [options] [hostid] ``` **执行示例**: ``` jps -l ``` **常用参数**: - `-l`:输出主类的...
Java提供了丰富的类库和方法来获取这些信息,主要包括JVM(Java虚拟机)信息、操作系统信息、系统属性以及类路径等。下面将详细阐述如何利用Java获取这些信息。 1. **JVM信息**: - 使用`java.lang.RuntimeMXBean`...
9. **编译OpenJDK**:书中可能涵盖源码获取、配置环境、编译过程以及理解OpenJDK源码的细节,帮助读者深入理解JVM内部实现。 10. **性能优化**:通过分析JVM的各种监控工具(如JConsole、VisualVM等),学习如何...
它可以用来查看Java系统的属性设置和JVM启动时的命令行参数,对于理解程序运行环境和进行故障排查非常有用。 **基本用法**: ``` jinfo [option] jinfo [option] <executable> jinfo [option] [server-id@] ``` ...
在Java编程语言中,获取本地系统信息是一项常用的任务,它涉及到对JVM(Java虚拟机)的状态监控以及操作系统级别的信息查询。本项目提供了一个源码示例,展示了如何使用Java来读取这些信息。以下是对这个源码工程的...
1. **-D**<property>=<value>: 设置系统属性。 - 示例:`-Dfile.encoding=UTF-8` - **-Dcom.ibm.dbgmalloc**: 启用此参数以获取更详细的堆内存分配信息。 - **-Dcom.ibm.jsse2.renegotiate**: 控制Java安全套接层...
- `-Dproperty=value`:设置系统属性,可以在程序中使用`System.getProperty(“”)`来获取。 - `-verbose`:显示冗余信息。 - `-verbose:class`:显示关于每一个类加载器的信息。 - `-verbose:gc`:报告每一个GC...
在Java编程语言中,获取当前系统的详细信息是一项基础但重要的技能,它可以帮助开发者更好地理解运行环境,对于调试、日志记录以及系统兼容性检查尤为重要。本文将深入解析如何利用Java内置的`System`类和`...
通过上述内容可以看出,Java提供了丰富的系统属性来帮助开发者获取运行时环境的相关信息。这些信息对于调试代码、适配不同操作系统以及优化程序性能都极为重要。开发人员可以根据需要选择合适的系统属性来获取所需的...
Java虚拟机(JVM)是Java程序运行的基础,它负责解析字节码并执行Java代码。在开发和调优Java应用时,了解和使用JVM启动参数至关重要。这些参数可以调整JVM的行为,优化内存分配、垃圾收集、线程设置等。以下是一些...
在Java编程语言中,开发人员经常需要访问与运行环境相关的各种系统参数,这些参数对于调试、配置以及确保程序兼容性等方面至关重要。通过Java内置的方法,我们可以轻松地获取一系列关于Java运行时环境(JRE)及操作...