Heap上的类对象是否也存储其方法详细信息?

时间:2016-12-06 09:04:24

标签: java c# memory-management compilation

我正在阅读关于OOP的内存管理。我理解调用堆栈以及如何在堆上进行对象实例化。 OS POP和Push如何调用堆栈数据进行注册。如何通过GC线程从堆中收集无法使用的垃圾。 我也理解在虚拟空间上创建的函数指针(委托)如何工作以指向其他函数。

我的问题是当对象被实例化时它是否也在HEAP上存储其类型(类)的方法细节,或者它只是像编译器名称一样在内部被编译器使用?就像int在堆上是4个字节一样,我想知道如何只用4个字节,方法变量也可以存储?

1 个答案:

答案 0 :(得分:0)

存储在堆上的每个对象都包含(i)标题块和(ii)数据,在您的情况下为int

标题块告诉.NET对象的类型和类型的有效操作,它们是程序存储器中已编译代码的一部分。

如需深入研究,请参阅此处:
http://blogs.microsoft.co.il/sasha/2012/03/15/virtual-method-dispatch-and-object-layout-changes-in-clr-40/