基本上,Foo实例在获取其值时会使用更多内存:
public class Foo
{
internal double bar;
double GetBar(){ return bar; }
}
还是喜欢这个?
public class Foo
{
internal double bar;
}
public static class FooManager
{
public static double GetBar(Foo foo) { return foo.bar; }
}
那就是每个方法每个对象或每个类型使用的内存是什么?
答案 0 :(得分:6)
实例本身只有一个指向加载类的方法表的指针,因此没有额外的每个实例开销可以有更多的方法,只有字段。
第二个示例将总共使用稍多的内存,因为您有两个类的定义,因此每个类开销更多(并且最初编写时,使用FooManager作为非静态类,您需要一个FooManager实例),但是每个Foo实例使用的内存量是相同的。