GC的一些基本概念

博客介绍了GC领域中对象的相关知识。对象是应用程序利用的数据集合和GC基本单位,由头和域组成。对象头存储元数据,不同语言存储信息有别;对象域是程序使用的数据。还区分了活动与非活动对象,介绍了根对象及确定存活对象的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 对象 对象在不同场合具有不同的意义。在GC领域中对象代表的是应用程序利用的数据集合,同时也是GC的基本单位,一般的对象都是由头(header)和域(fild)组成的。(基于我所使用的两种语言java和python都是这样的)

2 对象头(header)对象头一般存储着对象的元数据(大致可以分为类型信息和GC信息在Cpython中python所有的对象都是使用一个PyObj的指针去引用的。这个对象其实就是指向了python对象的头信息包括引用计数的数目和python对象的类型信息。类型信息主要是为了便于确定对象所占区域的大小和实现多态来使用的。有了引用计数和对象的大小这样就有了初步回收python对象的一个方向了。同样Java对象在java虚拟机规范中对象的header中同样存储了独享的GC信息,不过java是基于分代收集的所有存储了分代的信息和java类型信息)

3 对象域(fild)及是对象在程序是使用的数据

4活动对象和非活动对象。活动对象就是程序可是使用的对象(即可以被引用到的对象)。非活动对象就是不能再被程序所引用用的对象,及GC所要回收的垃圾。就像人一样,死了的不可能在活过来。因为我们的程序就是再想去引用他也是无法找到他的。

5 根。所有可以被引用的对象都被称为活动的对象。这其中有一部分对象是可以被程序直接引用到的对象,这些对象就是再GC中的根对象。GC就是通过这些对象去确定所有活着的对象的。一般的来说程序可以直接引用的对象是存在于全局变量,调用栈,和寄存器这些区域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值