首先了解一下java程序的运行过程:
java源程序首先经过编译生成JVM识别的字节码.class文件,然后JVM加载.class字节码文件并相应的解释为当前系统识别的机器码。由这个过程可以看出,不同OS平台只是JDK只是对应的JVM有所不同。
再来看下java的整体架构:
这张图也说明了JDK与JRE区别,JDK有对应的开发工具及其API。
JVM位于JDK和JRE的底层,JVM之下就是对应的OS平台。
2、JVM(Java Virtual Machine)
Java虚拟机屏蔽了与平台的相关信息,从而使java实现了与平台无关性。java程序在编译时候将程序编译成为能够在java虚拟机上能够运行的目标代码即字节码,JVM将其解释成具体平台的机器指令。这就是java所倡导的“一次编译,到处运行”。
JVM运行过程:
(1)、加载.class文件
(2)、管理并分配内存空间
(3)、执行垃圾回收
JVM架构:
JVM作为操作系统的一个应用程序进程,也有相应的生存周期:
(1)启动:当执行一个java程序的时候就会启动一个JVM,public satic void main(String[] args)作为程序的执行入口,也是JVM运行的起点。
(2)运行:main()方法作为程序的初始进程,其他进程都是通过main()方法这里开始执行的。java中进程有守护进程和非守护进程,main()方法是非守护进程,守护进程一般是JVM自己运行的进程。
(3)消亡:当程序中所有的非守护进程都终止后,jvm才会退出,或者可以通过Runtime类和System.exit()退出