获取你的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 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 functionpublic static void main(String[] args){getSystemProperty();Hashtable hashKey;hashKey=new Hashtable();//将系统信息的关键字和标题放到hashtablehashKey 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;}}运行结果 lishixinzhi/Article/program/Java/hx/201311/25847
成都创新互联于2013年开始,是专业互联网技术服务公司,拥有项目成都网站制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元大田做网站,已为上家服务,为大田各地企业和个人服务,联系电话:13518219792
一、 原理简介
我们获取jvm系统属性的时候,我们都是通过
System.getProperty(“paramName”),当我们再仔细看下System对象的时候,我们发现还有个getProperties方法。阅读下说明,果然是返回当前JVM的系统属性。
二、 编写JSP
只需要把下面内容拷贝到jsp页面中,并把该jsp放到应用中即可,具体内容如下:
%
/*
列出当前系统中的参数
*/
%
%@ page contentType="text/html;charset=UTF-8" pageEncoding="GBK" errorPage="../include/error.jsp"%
!------- IMPORTS BEGIN ------------
%@ page import="java.util.Properties" %
%@ page import="java.util.Iterator" %
%@ page import="java.util.Map" %
%@ page import="java.util.Map.Entry" %
!------- IMPORTS END ------------
!-- 页面登录信息,常量获取信息--
%!boolean IS_DEBUG = false;%
%
//1.获取参数
//2.权限判断
//3.逻辑操作
//获取当前系统的内存情况
Runtime currRuntime = Runtime.getRuntime();
currRuntime.gc();
long nTotalMemory = currRuntime.totalMemory();
long nFreeMemoy = currRuntime.freeMemory();
//把单位从字节转化为兆
String sSystemTotalMemoy = (nTotalMemory/1024/1024) + "M";
String sFreeSystemMemoy = (nFreeMemoy/1024/1024) + "M";
%
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /
title当前系统中的参数/title
style
.td_bg_color{
background-color:#FFFFFF;
}
.td_padding_left{
padding-left:10px;
}
/style
/head
body
table border="0" cellspacing="1" cellpadding="0" width="100%" style="background-color:#d1d6e9;"
tr
td colspan="3"当前系统的中参数列表,即[System.getProperties()]获取的值为/td
/tr
tr
td width="60px"序号/td
td width="300px"名称/td
td值/td
/tr
%
//打印出系统的属性值
int nIndex = 0;
Properties properties = System.getProperties();
if(properties!=null){
Iterator iterator = properties.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry aEntry = (Entry) iterator.next();
if (aEntry == null) {
continue;
}
nIndex ++;
%
tr
td%=nIndex%/td
td class="td_bg_color td_padding_left"%=aEntry.getKey()%/td
td class="td_bg_color td_padding_left"%=aEntry.getValue()%/td
/tr
%
}//end while
}else{//end if
%
tr
td colspan="3"
span style="margin-right:20px;"当前系统对象[System]中没有属性./span
/td
/tr
%
}//end else
%
tr
td%=nIndex++%/td
td class="td_bg_color td_padding_left"总共内存/td
td class="td_bg_color td_padding_left"%=sSystemTotalMemoy%/td
/tr
tr
td%=nIndex++%/td
td class="td_bg_color td_padding_left"空闲内存/td
td class="td_bg_color td_padding_left"%=sFreeSystemMemoy%/td
/tr
/table
/body
/html
不是文件,这个是JVM启动时的参数列表。
Properties props=System.getProperties(); //系统属性
props.getProperty("java.version");具体有那些属性,参照下边。
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java点抗 piler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
file.separator 文件分隔符(在 UNIX 系统中是“/”)
path.separator 路径分隔符(在 UNIX 系统中是“:”)
line.separator 行分隔符(在 UNIX 系统中是“/n”)
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录
读:
写:
System.setProperties(props);
简述properties文件的结构和基本用法
结构:扩展名为properties的文件,内容为key、value的映射,例如”a=2″
用法: