背景
- 最近在读深入理解JVM虚拟机,记录一下自己对于jvm的理解
运行时内存数据区域
定义及功能
程序计数器
- 程序计数器室一块较小的内存空间,可以看作是当前线程所执行的字节码行号指示器.
名称 | 定义 | 功能 | 是否线程私有 |
---|---|---|---|
程序计数器 | 一块较小的内存空间,可以看作是当前线程所执行的字节码行号指示器 | 通过改变计数器的值来选取吓一跳需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能需要以来计数器</font> | 是 |
java虚拟机栈 | 虚拟机描述的的是java执行方法的内存模型 | 每个方法执行的时候会生成一个帧栈,当中存储局部变量``操作数栈 ,动态链接 、方法出口等信息 什么是帧栈
|
是 |
本地方法栈 | 与虚拟机栈相同的作用 | 虚拟机使用到的native方法,hotspot虚拟将本地方法栈和虚拟栈合二为一 | 是 |
java堆 | 是java虚拟机管理的内存中最大的一块. | 唯一的目存放对象的实例,几乎所有的对象实例都在这里分配内存 | 否,线程共享 |
方法区 | 方法区是堆内存的逻辑部分,但是有个别名no-heap,目的是与堆区分开 | 用于存储已被虚拟机家在的类信息、常量、静态变量、即时编译器编译欧的代码等数据 | 否,线程共享 |
运行时常量池 | 常量池是方法区的一部分 | 用于存放编译器生成的各种字面量和符号引用 | 否,线程共享 |
java堆(Heap)
PSYoungGen
- eden
- from
- to
ParOldGen
- object
Metaspace
- class