2015-03-25 66 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

相關問題