1

在 C# 中,我了解静态变量是在内存中创建的,并且只要 AppDomain 存在,它就会存在。静态方法如何在内存中得到处理?方法是否像变量一样在堆栈/堆上创建?有没有方法GC之类的东西?这与调用堆栈有什么关系?

4

2 回答 2

3

方法存在于代码段中,既不在堆中,也不在堆栈中。代码只是加载到内存中,只要 AppDomain 存在,它就会一直存在。

静态方法和非虚拟方法只有一个地址,代码调用方法时直接使用地址。

虚方法也有地址,但不是直接使用的。在与该类关联的虚方法表中有一个指向该方法的指针,因此代码从表中获取该指针以查找该方法。

调用堆栈只是堆栈的另一个术语。

于 2012-06-08T22:43:17.793 回答
0

方法不在堆上,它们是代码的一部分——静态或实例方法。

于 2012-06-08T22:41:05.073 回答