2015-03-25 144 views
5

本质上,将更多的存储器可以通过富的实例中使用时,其值被获取这样的:使用更多方法加载类会花费更多内存吗?

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; } 
} 

也就是说,每个对象或每个类型的每个方法使用的内存是多少?

回答

6

实例本身只有一个指向由类加载的方法表的指针,所以没有额外的每个实例的开销,因为有更多的方法,只有字段。

第二个例子总共会使用更多的内存,因为您有两个类的定义,所以更多的每类开销(以及最初编写的FooManager作为非静态类,您需要一个FooManager实例),但每个Foo实例使用的内存量是相同的。

+1

谢谢!我只是好奇:P – AlphaModder 2015-03-25 04:45:36

+0

@Random我认为所有语言的观点都一样。至少适用于C++。 – prabhakaran 2015-03-25 04:55:41

+0

@prabhakaran那么,在C++中,没有虚函数的类甚至没有那个指针。 – Random832 2015-03-25 04:56:45

相关问题