【读书笔记】GC算法篇-------GC 学习必备小知识

1.GC是发生在堆中的行为

GC,被称为垃圾回收,是一种发生在堆中的行为。

一般的GC程序做的只有两件事:

  • 找到内存空间中的垃圾
  • 回收垃圾,让这部分无意义被占用的空间得到再利用
2. GC算法分类
  • 标记-清除算法
  • 引用计数法
  • GC复制算法
  • 标记-整理
3.对象

GC中的对象主要是由头(header)和域(field)构成的

  • 头,又称为对象头主要放置对象的大小对象的种类
  • 域,主要是对象的使用者操作的部分,域中的数据类型分为指针和非指针,一个对象会含有一个或多个域
4.mutator

简单理解为:“应用程序”。GC就是在这个程序中工作的程序。mutator有两种操作:

  • 生成对象
  • 更新指针

伴随这mutator的操作,内存空间就会产生垃圾,负责回收这部分垃圾的机制就是GC

5.堆

堆,是指执行程序时存放对象的内存空间,当mutator生成对象是申请的空间就是从这里分配的,GC回收对象实际就是管理对中已分配对象的机制。

在堆中可以被mutator引用到的对象叫做活动对象,不能引用到的叫做非活动对象。GC会销毁非活动对象,释放其占用的空间

6.分配

分配(allocation)指的是在内存空间中分配对象。当mutator生成新对象需要空间时,就会向分配器(allocator)申请一个大小合适的空间,分配器根据特定算法从堆中找到合适的满足要求的空间返回给

mutator

7.分块

分块(chunk)指为对象事先准备的空间,初始状态下堆被一个巨大的分块占据。分配器会根据mutator的要求把大的分块分割成合适的大小,作为活动对象使用。非活动对象会发生GC回收内存空间再次标称分块,为下次使用做准备。也就是说内存中各个块区都重复着分块—活动对象—非活动对象----分块—…

8.根

根(root)在GC中可以理解为指向对象指针的“起点”部分。

image-20220331225754357

如图中所示root即为根,由根引用到的对象A,对象A引用到的对象B即为活动对象,对象C无引用即为活动对象。

9.评价GC算法性能的标准
  • 吞吐量

  • 最大暂停时间

  • 堆使用效率

  • 访问的局部性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值