【发布时间】:2010-11-20 20:27:10
【问题描述】:
我了解到类字段存储在堆中,但是方法存储在哪里?在堆中还是在其他地方?他们是内联的吗?
【问题讨论】:
我了解到类字段存储在堆中,但是方法存储在哪里?在堆中还是在其他地方?他们是内联的吗?
【问题讨论】:
方法存储在内存中的其他位置。请注意,方法是针对每个类的,而不是针对每个实例的。所以通常情况下,方法的数量不会随着程序的运行时间而改变(有例外)。在传统模型中,方法所在的地方称为“代码段”。在.net 中,这更困难:方法最初存在于程序集中,并被映射到进程内存中。在那里,即时编译器会在本机代码中创建一些方法的第二个副本;这个副本被执行。 JIT 代码可能会在运行时多次创建和删除,因此也可以将其视为“在堆中”。
【讨论】:
类方法与所有代码一起存储在专门用于存储代码的程序存储器的专用段中。每个方法的代码存储一次。
【讨论】: