2013-12-08 70 views
1

有人可以幫助我理解以下關於低延遲編程的說明:使用列表的低延遲

儘量減少您擁有的對象數量。例如,喜歡ArrayList/ArrayDeque之類的基於數組的結構來處理像LinkedList這樣的基於指針的結構。

我知道一個數組列表可能在碎片堆中執行得更好;但從未意識到它涉及的對象較少。
相反,我知道ArrayList確實需要創建比實際需要更多的對象。

+1

你能告訴我們你在哪裏閱讀過嗎? –

+0

LinkedList中的節點通常每個元素使用24-32個字節的內存。 ArrayList通常每個元素使用4-8個字節。 –

回答

3

A LinkedList使用一個Node對象來包裝添加到它的每個元素。因此,如果您將10個對象添加到LinkedList,則實際上需要另外10個對象來保存它們。

儘管ArrayList會根據添加和刪除不時重新生成其後備數組,但它只需要一個後備數組對象來存放您添加到其中的所有對象。

垃圾收集和對象創建並不總是可以忽略的。

+0

不僅僅是添加一個'''Node'',這些節點不一定處於連續的內存中,所以''''''''''''''''''''''''可能是緩存未命中。 –