Java 检查JVM是32位还是64位
在制作Java程序来检查JVM是32位还是64位之前,我们先讨论一下JVM。
JVM是Java虚拟机,负责执行字节码。它是Java运行时环境(JRE)的一部分。我们都知道Java是平台无关的,但是JVM是平台相关的。我们需要为每个操作系统准备一个独立的JVM。由于有JVM的存在,我们可以将任何Java源代码的字节码在任何平台上轻松运行。Java文件的整个执行过程如下所示:
- 首先,我们将Java源代码保存为扩展名为.java的文件,这个文件将由编译器转化为扩展名为.class的字节码。这发生在编译时期。
-
现在在运行时,JVM读取并验证字节码,为变量分配内存,然后将字节码转换为机器可读的形式。
我们可以通过使用两个系统属性’os.arch’和’sun.arch.data.model’来判断JVM是32位还是64位的。还有另一种方法,我们可以通过使用’java –version’在命令行中检查。
getProperty()
在本文中,我们将使用这个方法来获取JVM的详细信息。它存在于System类中。它帮助检索指定参数的系统属性。如果参数存在,则返回一个包含给定参数值的字符串,否则返回null。
语法
System.getProperty(key);
在这里,’key’接受参数。
方法1:使用os.arch
示例
public class Main {
public static void main(String[] args) {
String info = System.getProperty("os.arch");
System.out.println(info + "-bit JVM is installed in your device ");
}
}
输出
amd64-bit JVM is installed in your device
在上面的代码中,我们声明了一个字符串变量名为’info’来存储’getProperty()’方法返回的值。
方法2:使用sun.arch.data.model
示例
public class Main {
public static void main(String[] args) {
String info = System.getProperty("sun.arch.data.model");
if (info.equals("64")) {
System.out.println(info + "-bit JVM is installed in your device ");
} else {
System.out.println(info + "-bit JVM is installed in your device ");
}
}
}
输出
64-bit JVM is installed in your device
在上面的代码中,我们声明了一个字符串变量名为’info’,用来存储’getProperty()’方法返回的值。在if else块中,我们使用’equals()’方法检查返回的字符串是否等于’64’。’equals()’方法用于比较两个字符串,其返回类型为布尔值,如果两个字符串相等,则返回true,否则返回false。在此情况下,if块为true。因此,它打印了64位。
方法3:使用命令行界面
在您的设备上打开cmd,并键入’java –version’。当您按下回车键时,您将根据您的设备配置看到结果 –
C:\Users\Lenovo>java --version
java 17.0.6 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)
结论
JVM是平台相关的机器,将字节码转换为机器可读的格式。32位和64位JVM的主要区别是内存大小限制。在32位JVM中,我们可以指定最大4GB的内存,而64位则具有更大的容量。在本文中,我们讨论了两个Java程序,用于检查JVM是32位还是64位。