2016-12-06 13 views
0

我閱讀有關OOP的內存管理。我瞭解調用堆棧以及如何在堆上實例化對象。 OS POP和Push調用堆棧數據如何註冊。 GC線程從堆中收集非垃圾垃圾的方式。 我也明白其中的虛擬空間創建工作函數指針(代表)如何指向療法功能。堆上的類對象是否也存儲其方法詳細信息?

我的問題是,當對象實例化是否也存儲其上HEAP類型(類)的方法的詳細信息或者只是在內部使用的編譯器就像IDENTIFER名字?就像int是4個字節堆,我想知道如何在只有4個字節,方法varible也得到存儲?

回答

0

保存在堆上的每個對象包括(ⅰ)標題塊,以及(ⅱ)數據,你的情況的int

標題塊告訴.NET對象的類型和該類型的有效操作,這是在程序存儲器中的編譯代碼的一部分。

對於深入瞭解這一點,在這裏看到:
http://blogs.microsoft.co.il/sasha/2012/03/15/virtual-method-dispatch-and-object-layout-changes-in-clr-40/

+0

謝謝你,請評論回來,如果我是正確的。 >所有大我們創建方法僅僅是編譯器的上方,所述編譯器的下方,編譯器解析它向下壓入和彈出ISA按照壓,對象數據(如屬性)存儲在堆,refrence被存儲在堆棧中。計算後,它會從堆中收集垃圾。 – sadanand