Java程序执行过程
Java源文件 -> 解析器 -> Class文件 -> Java类加载器 -> Java运行时数据区 -> 执行引擎
JVM运行时数据区
指令区:
程序计数器:指向当前线程正在执行的字节码指令的地址(行号)
虚拟机栈(VM Stack): 虚拟机栈中存储当前线程运行方法所需要的数据、指令和返回地址,Java虚拟机栈中存放的是一个个栈帧,栈帧中包含方法的:局部变量表、操作数栈、动态链接、方法出口。
本地方法栈: 本地方法栈与虚拟机栈的作用相似,不同的是本地方法栈为Native方法服务。
数据区:
方法区:类信息、常量、静态变量、JIT
堆区(Heap):Java虚拟机所管理的内存中最大的一块,Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象对象实例