JVM概念
JVM接到需要加载已class结尾文件,经过内部解析,翻译成操作系统识别操作指令和数据,得到实现开发者想要结果。从这个角度来看,JVM有点像一个黑盒子,开发者只需要将class文件丢给JVM,JVM就会实现他想要结果,我们无需关注在哪个操作系统上执行,我们只需要将我们编写文件,编译成class文件即可。真正实现跨平台、业务和计算机底层技术分离、减轻了开发人员技术要求和垂直领域细分。那我们接下来就可以慢慢解剖他的五脏六腑。
JVM生命周期
启动
启动一个JAVA程序,会产生一个JVM实例,拥有public static void main(String[] args)函数的class可以作为JVM实例运行的起点。
运行
main()作为程序初始线程的起点,任何其他线程均可由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM使用,程序可以指定创建的线程为守护线程。
消亡
JVM运行原理
JAVA实例对应一个相应JAVA程序(进程级别),当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtim