JVM - 关于GC算法

首先我们认识一下类加载器 不知道的小伙伴可以自行学习

JVM在进行GC时,并不是对这三个区域统一回收。大部分时候,回收都是新生代~

  1. 新生代
  2. 幸存区(form,to)
  3. 老年区

GC两种类: 轻GC(普通的GC) 重GC(全局GC)

 

GC题目:

  1. JVM的内存模型和分区 ~详细到每个区放什么?
  2. 堆里面的分区有哪些? Eden,form/to(谁空谁是to),老年区,说说他们的特点!
  3. GC的算法有哪些?标记清除法,标记压缩,复制算法
  4. 轻GC和重GC分别在什么时候发现?

引用计数法:

 NUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUllNUll

复制算法:

然后幸存区总是有一个保持零 就是说 假如两个都有东西 那么一个区就会把他的东西复制到另外一个区 然后清零 就变成了to区

主要的过程是这样的

我们可以看到新生区通过GC清楚算法 把存活对象丢进幸存区 然后form区的对象也丢进to区 这样 上面就变成from区

下面则是to区  然后紧接着继续清除 默认清楚15次后的对象还在就丢进养老区

这样的优点是 没有内存的碎片

缺点是 浪费了内存空间 总是有to这一大片空的,假设对象100%存活,实际上是不友好的,当然这是一种极端情况

 

标记清除算法(标记压缩清除):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值