2012-07-05 60 views
0

我需要存儲大量的我的類的實例,因爲我有一個非常可怕的計算機只有2GB的RAM,我需要它儘可能少的內存使用情況下運行。所以誰能告訴我有更多的字段或數組是更有效的。我不關心做這件事的「最佳方式」,我需要使用最少RAM的方式。那麼,是一個數組還是很多領域?Java什麼是更高效的內存明智?

+1

如果你瞭解Java,你會意識到它沒有任何區別。如果我在堆上創建了100個對象,那麼將它們的引用分配給100個單獨的字段或100個數組元素(除了數組本身的一個額外引用之外)沒有區別。 – duffymo

+0

你能給我們一個代碼示例嗎? – Brad

+0

如果您可以使用較短的字段,如'short','char'或'byte',這可以節省一些內存。 –

回答

3

你的問題有點不清楚,但基本上類

public class SomeClass { 
    int var1; 
    int var2; 
    ... 
    int var100; 
} 

將採取儘可能多的空間作爲int[100]陣列。根據平臺的不同,可能會有一些細微差別,但總共不超過16個字節,並且可以採取任何方式。 (你可以代替int替代任何其他數據類型,同樣的事情會是真的。)

但是,僅僅是明確的,無論是上述佔用對象超過100多空間較小,每片含一個int

2

數組並不以任何方式壓縮對象,它只是命令它們。所以字段或數組會有相同的內存開銷。

也就是說,擁有一組對象(或者一個List)將會更好地保持對象的收集和整合。

+0

如果必須訂購它們,它可能會使用更多的RAM來存儲List/Array的順序嗎? –

+1

你的意思是按順序存儲元素嗎?不同的集合實現將使用不同數量的內存。但坦率地說,考慮到JVM在啓動和運行時會使用多少內存,所使用的任何集合實現所使用的數量都可以忽略不計。 – Marvo

+0

一般來說'List'或'Array'會比'[]'數組佔用更多的存儲空間 - 可能只是另外16個字節,或者兩倍多,具體取決於細節。 –

相關問題