在C#中,我理解静态变量是在内存中创建的,只要AppDomain存在就会生效。如何在内存中处理静态方法?方法是否像堆栈一样在堆栈/堆上创建?方法GC有这样的东西吗?这与调用堆栈有什么关系呢?
答案 0 :(得分:3)
方法既存在于代码段中,也不存在于堆或堆栈中。代码只是加载到内存中,只要AppDomain存在就会保留在那里。
静态方法和非虚方法只有一个地址,代码在调用方法时直接使用地址。
虚拟方法也有地址,但不直接使用。有一个指向虚方法表中与该类关联的方法的指针,因此代码从表中获取指针以找到该方法。
调用堆栈只是堆栈的另一个术语。
答案 1 :(得分:0)
方法不在堆上,它们是代码的一部分 - 静态或实例方法。