四、方法区
简介
1.方法区在Hotspot中又称永久代、元空间(非堆)[这里的永久代、元空间在JVM虚拟机规范中是不等价的]
2.在jdk1.7(包含7)以前称为永久代,并且方法区是在JVM中
3.在jdk1.8以后称为元空间,并将方法区移除JVM的约束
4.使用垃圾收集器:FullGC
5.其中内含了常量池、域(Field)信息、已装载类信息、方法信息、JIT代码缓存
6方法区是直接内存(也就是直接分配在内存上的)
存储迁移过程
为什么要移除堆空间?
顾名思义(永久代)即经常不回被回收的,跟随电脑的内存进行扩展,可以减少gc,提高性能,并减少了内存溢出的风险。
常量池
常量池包含各种字面量和对类型、域和方法的符号引用。
参数设置
初始值 -XX:MetaspaceSize=100m
最大值 -XX:MaxMetaspaceSize=100m
建议不要随意修改设置,因可以跟随本地内存变化而进行扩充变化
经过以上学习类装载子系统、栈、堆、方法区、可延伸面试题:
对象在JVM中是怎么存储的?
? 答:创建对象的步骤有六种
判断对象对应的类是否经过类加载子系统加载过
为对象分配内存
处理并发安全的问题(TLAB)(CAS)
初始化分配到空间
设置对象的对象头
执行init方法进行初始化
对象头里面有什么?
类型指针—>指向类源数据,确定对象所属类型
运行时元数据
声明:如果是数组,还需要记录数组的长度。
图解流程–以上两问
五、对象访问定位
原文:https://www.cnblogs.com/lzq210288246/p/13073916.html