Dot-Net
什麼是堆中的類型對象
我知道當在堆中創建對象時,它們還有另外兩個欄位:
- 同步塊索引
- 類型對象指針
所以我想知道什麼時候在堆記憶體中創建類型對象,它保存什麼樣的數據?它只代表Type的元數據?
我一直無法找到有關此的詳細資訊。
Type 對像還包含支持該類型上的任何靜態欄位的字節,以及一個方法表,其中每個方法在該類型中定義一個條目。
如果方法已至少執行一次,則方法表中的每個條目都指向 JIT 編譯的本機程式碼。
類型對像是在第一次實例化類型或第一次引用靜態類型成員時創建的。
如果您想深入了解 CLR 的功能,我強烈建議您購買 Jeffrey Richter 的書,CLR via C# 。第 4 章中標題為“執行時事物如何關聯”的部分詳細介紹了堆上的 .NET 類型分配過程。
2005年5 月版的 MSDN 雜誌有一篇題為“ JIT 和執行:深入了解 .NET Framework 內部結構以了解 CLR 如何創建執行時對象”的文章,其中包含一些很好的資訊,特別是關於類型基礎和MethodTable的部分。