`
反求诸己
  • 浏览: 543260 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

JVM系统相关

    博客分类:
  • java
 
阅读更多

JVM系统属性(System.getProperty())和环境变量(System.getenv());

// 系统属性
  String javaVersion = System.getProperty("java.version");
  String javaVendor = System.getProperty("java.vendor");
  String javaVendorUrl = System.getProperty("java.vendor.url");
  String javaHome = System.getProperty("java.home");
  String javaVmSpecificationVersion =  System.getProperty("java.vm.specification.version");
  String javaVmSpecificationVendor = System.getProperty("java.vm.specification.vendor");
  String javaVmSpecificationName = System.getProperty("java.vm.specification.name");
  String javaVmVersion = System.getProperty("java.vm.version");
  String javaVmVendor = System.getProperty("java.vm.vendor");
  String javaVmName = System.getProperty("java.vm.name");
  String javaSpecificationVersion = System.getProperty("java.specification.version");
  String javaSpecificationVendor = System.getProperty("java.specification.vendor");
  String javaSpecificationName = System.getProperty("java.specification.name");
  String javaClassVersion = System.getProperty("java.class.version");
  String javaClassPath = System.getProperty("java.class.path");
  String javaLibraryPath = System.getProperty("java.library.path");
  String javaIoTmpdir = System.getProperty("java.io.tmpdir");
  String javaCompiler = System.getProperty("java.compiler");
  String javaExtDirs = System.getProperty("java.ext.dirs");
  String osName = System.getProperty("os.name");
  String osArch = System.getProperty("os.arch");
  String osVersion = System.getProperty("os.version");
  String fileSeparator = System.getProperty("file.separator");
  String pathSeparator = System.getProperty("path.separator");
  String lineSeparator = System.getProperty("line.separator");
  String userName = System.getProperty("user.name");
  String userHome = System.getProperty("user.home");
  String userDir = System.getProperty("user.dir");

  注解:

java.version Java 运行时版本
java.home Java 的安装目录
java.class.version Java 类格式的版本号
java.class.path Java 类的查找路径
java.io.tmpdir 默认的临时目录
java.compiler Java 所使用的及时编译器
java.ext.dirs Java 扩展包的目录
os.name 操作系统的名称
os.arch 操作系统的体系结构
os.version 操作系统的版本
file.separator 文件分隔符(Unix 下为'/')
path.separator 路径分隔符(Unix 下为':')
line.separator 换行符(Unix 下为'/n')
user.name 用户帐号名
user.home 用户目录
user.dir

用户当前的工作目录

 

 

  • 取得操作系统的环境变量

注意,这次是获取操作系统的环境变量,而不是获取JVM相关的一些变量。
  也许是为了营造JVM就是操作系统平台的气氛,抑或是为了强调 Java的平台无关性,不知几时起Java已经把System.getenv(String)函数废弃了。所以一般来说Java只能获取它自己定义的一些 变量,而无法与操作系统的环境变量交互,只能在运行靠java的“-D”参数来设置要传递给它的一些变量。
  所以唯一的办法只能先判断操作系统,然后用操作系统的命令来调出环境变量列表,设法获得该输出列表。

  • 代码实现

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class SystemValue {
 /**
  * 使用System获取系统相关的值
  */
 public static void getSystemProperties() {
  Properties pp = System.getProperties();
  System.out.println("System's Properties:");
  System.out.println();
  java.util.Enumeration en = pp.propertyNames();
  while (en.hasMoreElements()) {
   String nextE = (String) en.nextElement();
   System.out.print(nextE + "=" + pp.getProperty(nextE));
   System.out.println();
  }
 }

 public static void getCustomProperties(String key) {
  Map map = getEnv();
  System.out.println(key + "=" + map.get(key));
 }

 public static Map getEnv() {
  Map map = new HashMap();
  Process p = null;
  Runtime r = Runtime.getRuntime();
  String OS = System.getProperty("os.name").toLowerCase();
  System.out.println("OS="+OS);
  try {
   if (OS.indexOf("windows 9") > -1) {
    p = r.exec("command.com /c set");
   } else if ((OS.indexOf("nt") > -1)
     || (OS.indexOf("windows 20") > -1)
     || (OS.indexOf("windows xp") > -1)) {
    p = r.exec("cmd.exe /c set");
   } else {
    // Unix
    p = r.exec("env");
   }
   BufferedReader br = new BufferedReader(new InputStreamReader(p
     .getInputStream()));
   String line;
   while ((line = br.readLine()) != null) {
    String[] str = line.split("=");
    map.put(str[0], str[1]);
   }
  } catch (IOException ioe) {
   ioe.printStackTrace();
  }
  return map;
 }

 public static void main(String[] args) {
  // getSystemProperties();
  getCustomProperties("JAVA_HOME");
 }
}

分享到:
评论

相关推荐

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...

    JVM执行子系统.pdf

    Java虚拟机(JVM)执行子系统是Java平台的核心组件之一,它的主要功能是加载、链接并执行Java类文件中的字节码。在深入理解JVM执行子系统之前,我们需要了解Java类文件结构,以及JVM如何与这些类文件交互。 ### ...

    SAP JVM 8.1 64 bits

    SAP JVM 8.1 64位是一个专为SAP系统设计的Java虚拟机,它基于Oracle的Java Development Kit (JDK) 进行优化,以满足SAP应用程序的特定需求。SAP JVM旨在提高性能、可靠性和安全性,同时确保与SAP产品的无缝集成。...

    JVM执行子系统原理

    ### JVM执行子系统原理 #### 一、类文件结构与字节码指令 **Class类文件结构** Class文件是Java程序编译后产生的文件,...希望这些内容能够帮助读者更好地掌握JVM的相关知识,为进一步的研究和实践打下坚实的基础。

    慢慢琢磨jvm 经典

    此外,熟悉《JVM Specification》和相关的开源项目(如OpenJDK)是进阶学习的宝贵资源。通过实践,如分析JavaCore和dump文件,可以增强故障排查能力,有效应对内存泄漏、性能瓶颈等常见问题。 总之,JVM不仅是Java...

    JVM

    5. **本机库(Native Library)**:包含操作系统和硬件相关的功能。 ### 类加载过程 类加载分为加载、验证、准备、解析和初始化五个阶段。这个过程确保了只有正确无误的类能够被加载到JVM中。 ### 内存管理 1. **...

    jvm指令手册 +JVM必知必会,掌握虚拟机编译过程.rar

    JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    1. **环境变量设置**:通过设置`CATALINA_OPTS`环境变量,可以在系统级别全局地调整Tomcat中JVM的内存参数。 2. **编辑catalina.bat**:在Tomcat的bin目录下,直接修改catalina.bat文件,替换或添加`-Xmx`, `-Xms`,...

    SAP JVM 7.1 64 bits

    下面将详细讨论SAP JVM的关键组成部分和相关知识点。 1. **SAP JVM的特性**: - **64位支持**:64位版本的JVM可以访问超过4GB的内存,这对于处理大量数据或运行内存密集型应用至关重要。 - **性能优化**:SAP JVM...

    jvm特性与java特性

    此外,JVM的相关技术,如垃圾收集机制、运行时性能优化等,在Android平台上同样有着广泛的应用。 综上所述,JVM和Java特性共同构成了Java技术生态的核心,它们不仅为Java开发者提供了强大的开发工具和语言特性,...

    JVM.zip_java jvm_jvm

    "JVM.zip"可能是一个包含了与JVM相关的工具或示例代码的压缩包,特别是用于获取运行中的JVM系统的参数。这通常是开发人员为了监控和优化Java应用程序性能的重要手段。 在Java中,`SystemInfo`类的出现很可能是为了...

    JVM监控工具使用入门

    2. **本地JVM监控**:启动后,jvisualvm会自动检测当前系统的JVM实例,并显示相关的监控信息。 3. **远程JVM监控**:与jconsole类似,需要在远程JVM上启动特定的服务,并在jvisualvm中输入服务地址进行连接。 #####...

    jvm的基础知识总结

    JVM中的线程是Java程序运行时的执行路径,它依赖操作系统的原生线程实现。在JDK 1.2之后,线程模型为“1:1模型”,即每个Java线程映射到一个操作系统原生线程。 ### 直接内存 直接内存不属于JVM的内存,它属于操作...

    Tomcat JVM的参数调优

    【标题】"Tomcat JVM参数调优...总的来说,JVM参数调优是一个涉及内存分配、垃圾回收效率和系统资源平衡的复杂过程。适当的调优能确保Tomcat在处理大量并发请求时保持高效和稳定,同时避免内存问题导致的服务中断。

    visualvm监控jvm及远程jvm监控方法

    在JVM启动参数中添加`-Dcom.sun.management.jmxremote`等相关选项。 - **连接远程JVM**:在VisualVM的"Remote"选项卡中,输入远程主机的IP地址、端口号和认证信息,然后点击"Connect"。 - **监控远程应用**:连接...

    Java JVM Instruction Set

    你可能听说过与Java语言相关的Java虚拟机(JVM)。那么,这里所说的“虚拟”到底意味着什么呢? 通常情况下,Java源文件的扩展名为`.java`,类似于C语言源文件的`.c`扩展名。例如,如果我们的Java程序源代码全部...

    JVM详解与学习

    JVM的主要组成部分包括类加载器子系统、执行引擎子系统、运行时数据区域组件和本地接口组件。 ##### 2.2 Sun JVM Sun Microsystems 开发的JVM是最常见的JVM实现之一。它支持Java标准版(Java SE)、企业版(Java EE...

    Jvm堆栈dump文件分析

    总的来说,HeadAnalyzer 4.1.4是WebSphere环境下Java性能调优的重要工具,通过深入解析dump文件,它能帮助我们更好地理解和解决JVM相关的问题,提升系统的稳定性和性能。同时,配合`license`文件,可能还涉及到软件...

    JVM工作原理学习笔记

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。本文将深入探讨JVM的工作...这本《JVM工作原理学习笔记》应包含了这些内容的详细讲解,对于学习和提升JVM相关知识极具价值。

Global site tag (gtag.js) - Google Analytics