1、java运行机制
java是先编译后执行
编译阶段
在编译阶段由java 编译器(javac)将java源文件(hello.java)编译为字节码文件(hello.class),在通过jvm进行执行
运行阶段
- 由jvm子系统class loader 加载字节码文件
- 通过字节码校验器(Bytecode Verifier):检查代码片段中是否存在违反对象访问权限的非法代码
- 解释器(Interpreter) 读取字节码流翻译为指令
- 由Runtime执行执行
2、jvm组成
jvm主要的功能块分为类加载器、垃圾回收和执行引擎
JVM中把内存分为方法区、Java栈、Java堆、本地方法栈、PC寄存器5部分数据区域。
1. 方法区:用于存放类、接口的元数据信息,加载进来的字节码数据都存储在方法区
2. Java栈(虚拟机栈):执行引擎运行字节码时的运行时内存区,采用栈帧的形式保存每个方法的调用运行数据
3. 本地方法栈:执行引擎调用本地方法时的运行时内存区
4. Java堆(堆):运行时数据区,各种对象一般都存储在堆上
5. PC寄存器(程序计数器):功能如同CPU中的PC寄存器,指示要执行的字节码指令。