2013-10-25 148 views
5

我創建了一個靜態的類,這個類不保持狀態(不保留上下文或任何變量)只是一個函數列表。 但是這個類在應用程序中並不是很常用,所以我決定讓類可實例化。Android靜態類與非靜態類內存性能

爲什麼?

因爲我認爲一個可實例化的類將使用更少的內存,因爲它在整個應用程序生命週期中不可用。

這是正確的嗎?

靜態類比非靜態類使用更多的內存?

謝謝

+0

「靜態類」不是標準術語。 「靜態課堂」是什麼意思?無論如何,答案可能是「不存在差異」。 – Joni

回答

9

我想你已經誤解了班級的工作方式。任何類別的應用程序在整個生命週期內都是「可用的」。用於該類本身的內存(方法等)與實例所使用的內存大不相同。除非你真的創建了這個類的一個實例,它是無關緊要的。甚至可以實例化靜態類 - 只是它們不保留對包含類的實例的隱式引用。

如果你的類實際上並不需要一個隱式引用(即它不使用它),那麼把它作爲一個靜態嵌套類 - 或者把它作爲頂級類來取出。 (嵌套類有時會很痛苦 - 關於頂級類的規則更簡單。)

2

靜態類本身不會使用比非靜態類更多的內存。所有類都始終可用於應用程序中 - 您可以始終使用靜態類或創建非靜態類的實例。

如果您的類中只有方法(它們是輔助方法類型的方法),則更方便使用靜態類(無需創建實例),並且不會影響內存使用情況。