一、对象、头、域
1、对象
1)在面向对象编程中:指具体有属性和行为的事物
2)GC世界中:表示通过应用程序利用的数据的集合。
3)对象配置在内存空间里。
4)GC 根据情况将配置好的对象进行移动或销毁。
5)对象是GC的基本单位
6)对象由头(header)和域(field)构成
2、头
1)对象中保存对象本身信息的部分称为头(可以理解为标识)
2)主要包含:对象的大小、对象的种类
3、域
1)对象使用者在对象中可访问的部分称为“域”
2)与类型分为指针(指向内存空间中某块区域的值)、非指针(是指在编程中直接使用值本身,比如:数值、字符)
二、指针
1、GC根据对象的指针去搜索其他对象
2、GC对非指针不进行任何操作
三、Mutator(有改变某物的意思)
1、改变对象引用关系
2、具体操作
1)生产对象
2)变更指针
四、堆
1、堆指的是用于动态(程序执行时)存放对象的内存空间。当mutator申请存放对象时,所需的内存空间就会从这个堆中被分配给mutator
2、执行mutator前 => GC要分配用于堆的存储空间 => mutator 执行 => 程序按照mutator 的要求在堆中存放对象 => 堆被对象占满 => GC启动 => 分配可用空间
五、活动对象、非活动对象
1、将内存空间中的对象能通过mutator引用的对象称为 "活动对象" 反之 "非活动对象"(死掉的对象)
2、死掉的对象没法通过mutator找到他
3、GC 会保留活动对象销毁非活动对象