图解JVM(五)——运行时数据区总结

Q1 : JVM内存模型,有哪些区,分别的作用?

在这里插入图片描述

  1. 类加载子系统将class文件加载到运行时数据区
  2. class文件内容会按照规范加载到运行时数据区的不同区域
  3. 执行引擎通过运行时数据区进行指令执行

运行时数据区分类:

在这里插入图片描述

虚拟机栈:

在这里插入图片描述

堆内存:

在这里插入图片描述

方法区:

在这里插入图片描述

Q2: Java 8的内存分代改进?

在这里插入图片描述

Q3 : 类加载流程

在这里插入图片描述

Q4: 对象什么时候进入老年代?

在这里插入图片描述

Q5: Eden和Survivor的比例分配,为什么有两个survivor区?

默认情况下Eden space : Survivor 0 space : Survivor 1 space = 8 : 1 : 1。可通过-XX:SurvivorRatio=8设置其对应比例。-XX:NewRatio=5设置老年代和年轻代的比例。

在Minor GC时,会把Eden区和Survivor From区无法回收的对象复制到Survivor To区,以提高GC的效率。

Q6: 永久代会发生垃圾回收嘛?

永久代会发生垃圾回收,但其效率较低。只有在Full GC(老年代空间不足,永久代空间也不足时)时进行。

回收对象主要是:废弃的常量和不再使用的类型

废弃的常量:无引用即可。

不再使用的类型条件:

  1. 无该类的任何实例对象,包括该类以及其派生子类的所有对象
  2. 加载该类的类加载器被回收
  3. 该类的class对象没有被引用,防止反射获取该类的实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值