如果我有一個Java對象的ArrayList,底層實現是否僅僅是一個對象引用的數組?我創建了這個方法:arrayList大小的區別
//method returns all combinations of Objects
public ArrayList<ArrayList<Object>> getAllCombinations(ArrayList<Object> allObjects){
}
當我開始思考這個問題,我想知道如果我可以只返回一個ArrayList<ArrayList<Integer>>
其中整數均allObjects位置(主要是認爲這將極大地使用較少的內存)。但是後來我開始認爲數組實現的每個值都指向了數組中的對象的內存位置,並且數組並沒有爲我創建的每個ArrayList創建新的對象(這肯定會使用更多的內存)。所以實際上,如果我實現上面提到的方法,它會使用大致相同的內存,對嗎?
我想我需要了解Java的內存分配更好一點......
雖然我明白你的觀點,但至少有點似是而非的保持,每個元素只使用4個字節。雖然確實參考值只有那麼大,但這忽略了這樣一個事實,即必須從堆中爲每個對象分配空間。 – scottb
@scottb很明顯 - 操作者似乎擔心把對象放置在數組列表中會使其大小增加一倍。我試圖解釋一下,即使是一個大型對象,在列表中添加4個字節的「內存使用量」。 (這是一個簡化,因爲底層數組在每次添加時不會調整大小) – assylias
@scottb您能解釋一下您對每個對象的堆分配的含義嗎? – sunrize920