2010-03-17 61 views
2

如果我有一個名爲myclass的類是否在類中有靜態方法影響其在內存中的大小?靜態方法會影響php對象的大小嗎?

class myclass{ 
public $instancevar; 
public static function method1(){} 
public static function method2(){} 
} 

添加更多靜態方法會使myclass的實例變大嗎?

我知道靜態方法是在類的實例之間共享的,但是添加更多或更大的靜態方法會影響內存中對象的大小呢?同樣,如果我將一個實例作爲參數傳遞給方法,會有更多的靜態方法影響執行時間嗎?

回答

1

我甚至會說成員方法也不增加對象的內存佔用。如果我序列化一個對象,那麼只有來自哪個類的信息是一個實例,哪些值的屬性已經被序列化。這足以確定對象的行爲。

您可以計算一個對象的大小described in this question

您將看到添加或刪除靜態或非靜態方法不會更改對象的大小。


綜上所述:如果您使用的不是直接使用對象方法的對象進行操作靜態方法一無所獲。

0

靜態方法不應該增加對象的內存佔用量。

問題是 - 你會發現如果靜態方法確實會增加對象的內存佔用量嗎?

+0

我不願意,但其他人已經採取了我使用「巨大」的對象,實際上只有六個成員變量和幾個大型靜態函數的問題。我只是想檢查我的理解:) – andyjdavis 2010-03-18 01:43:46