.Net CLR里的根对象是如何被释放的
💡
原文中文,约1700字,阅读约需4分钟。
📝
内容提要
本文讨论了托管根对象的释放方式,通过C/C++内存分配模拟发现,根对象的object和methodtable是被系统自动回收的,因此托管根对象是在CLR运行完毕之后,被系统回收内存空间。
🎯
关键要点
-
根对象被GC标记为存活对象,不会被回收。
-
pm对象在CLR运行结束之前一直被标记为存活。
-
通过CLR Main入口的exit_code可以观察到CLR运行完毕。
-
pm对象和MethodTable指针在内存中存在,但没有被回收。
-
C/C++内存分配模拟显示,MethodTable和Object在Main运行完成后被系统自动回收。
-
托管根对象是在CLR运行完毕之后被系统回收内存空间。
➡️