托管堆

托管堆根据存储信息不同化为多个区域,其中最主要2个区域 垃圾回收堆(GCheap) 和加载堆 (LoaderHeap)。

     GCheap用于存储对象实例,收GC管理,loaderHeap又可分为:high-frequency-heap ,low-frequency-heap和Stub-heap,不同的堆上又存储不同的信息。loaderheap最重要的信息就是元数据相关的信息。也就是type对象。,每个type对象在loader heap上体现为一个method table 方法表。而method table 中记录了存储的元数据信息,例如:基类型,静态字段,实现的接口,所有的方法等等。 loaderheap不受GC控制,其生命周期从创建到appdomain卸载。

     相关基本概念

     typehandler 类型句柄,指向对象实例的方法表,每个对象创建时都包含附加成员,并且占用4个字节的内存空间。每个类型都对应一个方法表,方法表创建于编译时,主要包含了类型的特征信息,实现的接口数目,方法表的slot数目等。

     syncBlockIndex  用于线程同步,每个对象创建时也包含该附加成员,它指向一块被称为 Synchronization Block的内存块,用于管理对象同步,同样占用4个字节的内存空间。

     NextObjPtr 由托管堆维护的下一指针,用于标识下一个新建对象时在托管堆中的所处的位置,CLR初始化时,NextObjPtr 位于托管堆的基地址。

    

原文地址:https://www.cnblogs.com/30763402/p/1618191.html