「java怎么判断虚拟系统」深入理解java虚拟机

博主:adminadmin 2023-01-04 12:48:07 930

本篇文章给大家谈谈java怎么判断虚拟系统,以及深入理解java虚拟机对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA判断当前操作系统环境是xp还是linux

JAVA判断当前操作系统环境是xp还是linux可用os.name来实现。

代码如下:

public class A

{

    public static void main ( String[] args )

    { 

        System.out.println (System.getProperty ("os.name"));

    }

}

Java判断OS是linux还是windows

System.out.println("===========os.name:"+System.getProperties().getProperty("os.name"));

System.out.println("===========file.separator:"+System.getProperties().getProperty("file.separator"));

System类

public static Properties getProperties()

将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回

键 相关值的描述

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.compiler 要使用的 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 用户的当前工作目录

Java虚拟机怎么判断对象没被引用从而回收,什么时候会回收,什么时候会销毁?

1. 引用计数器算法

解释

系统给每个对象添加一个引用计数器,每当有一个地方引用这个对象的时候,计数器就加1,当引用失效的时候,计数器就减1,在任何一个时刻计数器为0的对象就是不可能被使用的对象,因为没有任何地方持有这个引用,这时这个对象就被视为内存垃圾,等待被虚拟机回收

优点

客观的说,引用计数器算法,他的实现很简单,判定的效率很高,在大部分情况下这都是相当不错的算法

其实,很多案例中都使用了这种算法,比如 IOS 的Object-C , 微软的COM技术(用于给window开发驱动,.net里面的技术几乎都是建立在COM上的),Python语言等.

缺陷

无法解决循环引用的问题.

这就好像是悬崖边的人采集草药的人, 想要活下去就必须要有一根绳子绑在悬崖上. 如果有两个人, 甲的手拉着悬崖, 乙的手拉着甲, 那么这两个人都能活, 但是, 如果甲的手拉着乙, 乙的手也拉着甲, 虽然这两个人都认为自己被别人拉着, 但是一样会掉下悬崖.

比如说 A对象的一个属性引用B,B对象的一个属性同时引用A A.b = B() B.a = A(); 这个A,B对象的计数器都是1,可是,如果没有其他任何地方引用A,B对象的时候,A,B对象其实在系统中是无法发挥任何作用的,既然无法发挥作用,那就应该被视作内存垃圾予以清理掉,可是因为此时A,B的计数器的值都是1,虚拟机就无法回收A,B对象,这样就会造成内存浪费,这在计算机系统中是不可容忍的.

解决办法

在语言层面处理, 例如Object-C 就使用强弱引用类型来解决问题.强引用计数器加1 ,弱引用不增加

Java中也有强弱引用

2. 可达性分析算法

解释

这种算法通过一系列成为 "GC Roots " 的对象作为起始点,从这些节点开始向下搜索所有走过的路径成为引用链(Reference Chain) , 当一个对象GC Roots没有任何引用链相连(用图论的话来说就是从GC Roots到这个对象不可达),则证明此对象是不可用的

优点

这个算法可以轻松的解决循环引用的问题

大部分的主流java虚拟机使用的都是这种算法

3. Java语言中的GC Roots

在虚拟机栈(其实是栈帧中的本地变量表)中引用的对象

在方法区中的类静态属性引用对象

在方法区中的常量引用的对象

在本地方法栈中JNI(即一般说的Native方法)的引用对象

请教Java 如何判断操作系统是32位还是64位

Java 判断操作系统的位数得通过 JNI。

经常有人说使用 System.getProperty("os.arch"),事实上这获得的是 CPU 的架构,而现在 CPU 一般都是 64 位的架构。

如果是 SUN/Oracle 的 JDK,可以使用 System.getProperty("sun.arch.data.model"); 来获得 JVM 是 32 位的还是 64 位的。

java 如何判断操作系统是Linux还是Windows

System.out.println("===========os.name:"+System.getProperties().getProperty("os.name"));  

System.out.println("===========file.separator:"+System.getProperties().getProperty("file.separator"));

System类

public static Properties getProperties()

将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回

键 相关值的描述

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.compiler    要使用的 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    用户的当前工作目录  

关于java怎么判断虚拟系统和深入理解java虚拟机的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。