看啥推荐读物
专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

CLR跨代标记内存模型

dotNET跨平台  · 公众号  ·  · 2023-10-24 07:59
CLR深度结构内存模型,主要是跨代引用。用以描述老年代引用新生代(短暂堆)里面的对象范围。1.GCDescGC对象内存范围操作结构模型class CGCDesc{ CGCDesc () {}}可以看到它里面只有一个默认构造函数。2.CGCDescSeriesGC对象内存范围描述结构模型class CGCDescSeries{public: union { size_t seriessize; val_serie_item val_serie[1]; }; size_t startoffset;}一个共用体和一个八字节的成员变量。3.card_table位标记描述表,它是一块二进制内存,用十六进制表示0x7fffffff44444444 ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff 00000000000000ff比如n1.selfName= n2会用JIT_WriteBarrier设置0xff,也即是上面的00000000000000ff4.整体card_table确认老年代里面包含了引用新生代(短暂堆)的对象,遍历card_table查找出这个范围。然后遍历这个范围,找到老年代引用 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照