1.写在前面
··本文主要讲述关于java虚拟机JVM的整体架构,不过多阐述内部细节。其它细节问题会单另成篇发布。
·· 我们日常使用的java,C++等语言其实就是 高级程序语言,以java来说,一个.class文件经过编译成为字节码文件之后,交给JVM来处理和适配。不同的操作系统适配不同的虚拟机环境。之后成为机器能够识别的语言转达给CPU进行执行。
1.什么是java虚拟机
它是用来执行java字节码的虚拟计算机,拥有独立的运算机制。java语言也附带了JVM所带来的 跨平台性以及优秀的垃圾回收机制。
说的再通俗一点,他就是那些字节码(二进制)的运行环境,然后解释为对应操作系统可以识别的机器指令执行。
2.java现在使用哪个VM
目前java使用的是市面上性能最高的代表作之一, HotSpot VM。
它基于 栈式架构,设计实现比较简单,避开了寄存器架构的分配难题,执行过程依赖栈帧。具以一下特点
- 指令集更小,编译器更容易实现;
- 可移植性更好;
- 无需硬件支持;
- 更好的实现跨平台性;
3.JVM由哪几部分构成
经过java编译器编译后生成的java字节码文件进入 JVM。其内部构成主要分为5部分。
- 方法区
- 堆
- PC寄存器(程序计数器)
- 虚拟机栈
- 本地方法区栈
(后续会发布关于这五个区域的详细解释。)
4.JVM的生命周期
虚拟机再如下几种情况会退出:
- 程序正常执行完成;
- 程序再执行过程中出现异常或错误;
- 操作系统出现错误;
- 线程调用了 Runtime类或System类的一些方法主动退出等;