文章目录
运行时数据区
程序计数器
- 程序计数器可以看做是当前线程所执行的字节码的行号指示器
- 每条线程都有一个独立的程序计数器,属于线程私有内存
- 此内存区域是唯一一个没有规定OOM情况的区域
Java虚拟机栈
- 线程私有,生命周期与线程相同
- 虚拟机栈描述的是java方法执行的内存模型.每个方法从调用到执行完成的过程.都对应这一个栈帧在虚拟机栈中的入栈和出栈
- 栈帧是方法运行时的基础数据结构
- 局部变量表:存放编译期可知的基本数据类型,对象引用,returnAddress类型,
- 虚拟机执行Java方法服务
本地方法栈
- 虚拟机使用native方法服务
Java堆
- 线程共享
- 垃圾回收器管理的主要区域,也被成为GC堆
- 从分代收集算法的内存回收角度来划分
新生代 包含:eden空间/from servivor空间 / to survivor空间
老年代
方法区
- 线程共享
- 存储已被虚拟机加载到类信息,常量,静态变量,即时编译器编译后的代码
运行时常量池
- 线程共享
- 存储已被虚拟机加载到类信息,常量,静态变量,即时编译器编译后的代码
运行时常量池
- 运行时常量池是方法区的一部分
- 存放编译期生成的个中字面量和符号引用,这部分内容将在类加

本文详细解读Java运行时数据区(包括程序计数器、虚拟机栈、本地方法栈、Java堆、方法区和运行时常量池),介绍对象创建内存分配机制,指针碰撞与空闲列表,以及CMS收集器下的内存管理,最后探讨OOM异常的实战案例。
最低0.47元/天 解锁文章
1621

被折叠的 条评论
为什么被折叠?



