-
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一,通过在实际的计算机上仿真或者模拟各种计算机功能来实现的。
-
Java虚拟机(JVM)一种用于计算机设备的规范,可用不同的方式(软件或硬件)加以实现,有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
-
Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
-
Java虚拟机规范定义了一个抽象的——而非实际的——机器或处理器,一旦一个Java虚拟机在给定的平台上运行,任何Java程序(编译之后的程序,称作字节码)都能在这个平台上运行。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译,就可以在多种平台上不加修改地运行,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
使用主体Java虚拟机是Java语言底层实现的基础。这有助于理解Java语言的一些性质,也有助于使用Java语言。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。
数据类型Java虚拟机支持Java语言的基本数据类型有8种
注意String不是基本数据类型
byte 1个字节
-
byte 数据类型是8位、有符号的,以二进制补码表示的整数;
-
最小值是 -128(-2^7);
-
最大值是 127(2^7-1);
short 2字节
-
short 数据类型是 16 位、有符号的以二进制补码表示的整数
-
最小值是 -32768(-2^15);
-
最大值是 32767(2^15 - 1);
int 4字节
-
int 数据类型是32位、有符号的以二进制补码表示的整数;
-
最小值是 -2,147,483,648(-2^31);
-
最大值是 2,147,483,647(2^31 - 1)
long 8字节
-
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
-
最小值是 -9,223,372,036,854,775,808(-2^63);
-
最大值是 9,223,372,036,854,775,807(2^63 -1);
float 4字节
-
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
-
float 在储存大型浮点数组的时候可节省内存空间;
-
默认值是 0.0f;
double 8字节
-
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
-
浮点数的默认类型为 double 类型;
-
double类型同样不能表示精确的值,如货币;
boolean 1字节
-
boolean数据类型表示一位的信息;
-
只有两个取值:true 和 false;
-
这种类型只作为一种标志来记录 true/false 情况;
-
默认值是 false;
char 2字节
-
char 类型是一个单一的 16 位 Unicode 字符;
-
最小值是 \u0000(十进制等效值为 0);
-
最大值是 \uffff(即为 65535);
-
char 数据类型可以储存任何字符;
Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。
Java虚拟机的寄存器有四种:
-
pc:Java程序计数器
-
optop:指向 *** 作数栈顶端的指针
-
frame:指向当前执行方法的执行环境的指针。
-
vars:指向当前执行方法的局部变量区第一个变量的指针。
栈有三个区域:局部变量区、运行环境区、 *** 作数区。
1、局部变量区 每个Java方法使用一个固定大小的局部变量集,它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。
2、运行环境区 在运行环境中包含的信息用于动态链接,正常的方法返回以及异常传播
3、 *** 作数栈区机器指令只从 *** 作数栈中取 *** 作数,对它们进行 *** 作,并把结果返回到栈中,每个原始数据类型都有专门的指令对它们进行必须的 *** 作。每个 *** 作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。 *** 作数只能被适用于其类型的 *** 作符所 *** 作。
为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun公司的Java虚拟机规范。
Java 开发工具包(JDK)中的工具 javap.exe 可以显示 java.class 文件的字节码,这个 *** 作被称为文件的反汇编
javap -c classname
若类文件名为 Account.class,则相应的 javap 命令行为: javap -c Account
安装 Java 开发工具包后,可以在 \bin 文件夹下找到 javap.exe 工具
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)