JVM结构解析

版权声明:All right reserved https://blog.csdn.net/a308601801/article/details/86620101

JVM内存区域分为方法区、虚拟机栈、本地方法栈、堆、程序计数器

方法区:也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域

虚拟机栈:描述的是 Java 方法执行的内存模型:每个方法被执行的时候 都会创建一个“栈帧”用于存储局部变量表(包括参数)、操作栈、方法出口等信息

本地方法栈:与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为 Native 方法服务

堆:也叫做java 堆、GC(Garbage Collection)堆是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,在JVM启动时创建。

程序计数器:是最小的一块内存区域,它的作用是当前线程所执行的字节码的行号指示器。

 

堆的划分:

① JVM 中共享数据空间可以分成三个大区,新生代(Young Generation)、老年代(Old Generation)、永久代(Permanent Generation),其中 JVM 堆分为新生代和老年代

② 新生代可以划分为三个区,Eden 区(存放新生对象),两个幸存区(From Survivor 和 To Survivor)(存放每次垃圾回收后存活的对象);

永久代管理 class 文件、静态对象、属性等(JVM uses a separate region of memory, called the Permanent Generation (orPermGen for short), to hold internal representations of java classes. PermGen is also used to store more information);d.JVM 垃圾回收机制采用“分代收集”:新生代采用复制算法,老年代采用标记清理算法

猜你喜欢

转载自blog.csdn.net/a308601801/article/details/86620101