java – JVM如何读取系统属性?

前端之家收集整理的这篇文章主要介绍了java – JVM如何读取系统属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在System类中找到了这个,但我想知道它是如何实现的.

/**
     * System properties. The following properties are guaranteed to be defined:
     * <dl>
     * <dt>java.version         <dd>Java version number
     * <dt>java.vendor          <dd>Java vendor specific string
     * <dt>java.vendor.url      <dd>Java vendor URL
     * <dt>java.home            <dd>Java installation directory
     * <dt>java.class.version   <dd>Java class version number
     * <dt>java.class.path      <dd>Java classpath
     * <dt>os.name              <dd>Operating System Name
     * <dt>os.arch              <dd>Operating System Architecture
     * <dt>os.version           <dd>Operating System Version
     * <dt>file.separator       <dd>File separator ("/" on Unix)
     * <dt>path.separator       <dd>Path separator (":" on Unix)
     * <dt>line.separator       <dd>Line separator ("\n" on Unix)
     * <dt>user.name            <dd>User account name
     * <dt>user.home            <dd>User home directory
     * <dt>user.dir             <dd>User's current working directory
     * </dl>
     */

    private static Properties props;
    private static native Properties initProperties(Properties props);

由于它是一种原生方法,我假设有一个C-File,它可以完成所有的魔术.
是否有一个特定于操作系统的文件,它通过C中的getenv()加载变量,或者这是某种特定平台的硬编码(无论是os.name,os.version等,都必须是动态的)?

如果操作系统是具有as行分隔符或< foo>的修改后的Linux内核,该怎么办?作为路径分隔符? JVM如何知道在哪里搜索这些本机文件,如果它们存储在下面…< foo> ..< foo> native< foo> amd_xyz甚至知道路径分隔符之前?

有没有办法研究实施?

解决方法

看看OpenJDK源代码.例如,Linux的文件分隔符定义为 like this

inline const char* os::file_separator() {
  return "/"; 
}

猜你在找的JVM相关文章