没研究过,关注中..
static方法存储在 stack(栈) 中。
class文件被ClassLoader load进入,该静态方法即可被调用。
有个概念错了,就是instance method 也不是一个对象 一copy的。method在内存中永远都是一copy的。
只是肤浅的了解一点
静态成员通过类直接访问,非静态成员须通过类的实例来访问
CLR 会创建多种不同的堆:GC 堆, JIT 堆, 大对象堆(>85M),加载器堆(高频堆、低频堆、代理堆等).等。对象都是 分配在GC 堆。
类 的方法都会放在 堆里面,但不是在GC 堆里,而是在 高频堆上(因为使用频率高)。因为不在GC堆上所以不会在进行GC的时候被释放掉,而是在应用程序域卸载的时候被卸载。 每个类型都会引用着一个方法表指针。
Q: static方法存储于何处。
A: 静态方法也是存在堆上面的
Q: static方法如何与类关联
A: static方法在IL转换成本地CPU指令时,利用程序集的元数据,CLR提取与这些类型相关的信息,并创建一些数据结构来表示类型本身。
这里我理解的是在head已经创建了相应的类,只是没有谁为指向它,静态的方法,成员也是在这时候创建了,不知道理解的对不对.
可参考:
http://www.cppblog.com/luyulaile/archive/2011/04/08/143703.html
CLR Via C# 第四章
http://www.docin.com/p-220589192.html