簡體   English   中英

為arraylist分配的內存連續?

[英]is memory contiguous allocated for arraylist?

當我們使用new ArrayList()時是連續分配內存嗎? 如果我們調用list.add(e)10次,所有元素是否會通過添加順序連續存儲在內存中,還是隨機存儲在內存中?

謝謝。

首先,您需要了解ArrayList的工作原理。 它將“引用”或“指針”存儲到內部對象數組elementData中的實際存儲。 這個引用數組可能是連續的,但是特定於JVM。 添加的實際對象存儲在堆上,幾乎肯定不會是連續的,盡管這是特定於JVM的。

elementData[0] ===> object 1
elementData[1] ===> object 2
elementData[2] ===> object 3
...

其次,你提到多次調用add()...當ArrayList內部的elementData不再大時,它將它調整為更大的一個,+ 50%IIRC,並將所有引用復制到新的elementData,實際的對象不移動...

最后,連續內存通常是高性能本機應用程序的一個問題。 在Java中,內存由JVM管理,並從底層操作系統借用,從硬件,甚至是虛擬化硬件......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM