JVM结构图
类加载器把字节码文件(.class)文件加载JVM虚拟机中的过程
以上是Java虚拟机的结构,和编译加载流程。
JVM内存管理
Java栈区:
作用: 它存放的是Java方法执行时的所有的数据
组成: 由栈帧组成,一个栈帧代表一个方法的执行
Java栈帧:(线程私有)
每个方法从调用到执行完成就对应一个栈帧,在虚拟机中入栈到出栈。(局部变量、栈操作数、动态连接、方法出口)
本地方法栈:
本地方法栈专门为native方法服务的
方法区:
储存被虚拟机加载的类的信息、常量、静态变量、即时编译器编译后等数据, 特此强调方法区是永远占据内存的。
Java堆区:(线程公有)
作用: 所有通过new创建的对象的内存都在堆中分配
特点: 是虚拟机中最大的一块内存
程序计数器 (线程私有)
作用: 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,可以理解为是当前线程的行号指示器
虚拟机为了便于管理从操作系统拿到的内存,其将所占用的内存从概念上划分出多个不同区域。这些区域各司其职、相互协作,支撑java应用的整个生命周期。
区域:堆、