JRE与JVM的关系和区别:
The JRE package is intended for distribution with applications. It does not contain the tools.jar file that has the compiler and other command line tools. The reason Sun makes the distinction is to give developers a more compact set of files to distribute with a product.Also, JVM is the more generic name which can apply to any program which obeys the Java Virtual Machine Specification - whether it's made by Sun, IBM,Microsoft, or whoever.
JRE on the other hand is the name for Sun's implementation of a JVM.
JVM的生命周期
JVM通过调用某个初始类的publicstatic void main(String[] args)方法来运行一个Java程序。
JVM内部有两种线程:守护线程和非守护线程,守护线程通常是由虚拟机自己使用的,比如垃圾回收线程。main()方法开始的线程,是非守护线程。只要还有任何非守护线程在运行,Java程序就会继续运行,虚拟机依然存活。
所有非守护线程都终止时,虚拟机实例将自动退出。
若安全管理器允许,程序自身也可调用Runtime类或System类的exit()方法退出,从而终结虚拟机实例。
JVM的数据类型
JVM对数据类型的内部格式进行了严格规定,使得各种JVM的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可移植性。
JVM支持基本数据类型和引用数据类型,
其中基本数据类型如下:
byte 1字节有符号整数
char 2字节无符号Unicode字符
short 2字节有符号整数
int 4字节有符号整数
long 8字节有符号整数
float 4字节IEEE754单精度浮点数
double 8字节IEEE754双精度浮点数
Java的类型检查都是在编译时完成的,基本数据类型的数据在执行时不需要用硬件标记,操作这些基本数据类型的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd。
JVM没有给boolean类型设置单独的指令。boolean型的数据是由integer指令来处理的,boolean型的数组则是用byte数组来处理的。
JVM支持的引用数据类型包括: