我所遇到的一個奇怪的情況:學生(我在這方面的教學助理)必須實現自己的單鏈表(SLL)的版本,根據經驗與雙鏈表的Java標準庫實現進行比較。JVM空間複雜度的細節:單鏈表VS雙向鏈表
而這正是這樣會很奇怪:我已經看到多個學生注意,DLL型材在大約0.5%的額外空間利用率與含有相同類型的元素相等數量的SLL。所有的數據結構的基本分析都告訴我SLL每個節點有2個引用(1到下一個元素,1到包含的值),而DLL有3個(對前一個元素的額外引用)。換句話說,每個節點的空間使用量增加了50%(不考慮包含值的大小)。
所包含的值大多是整數值的對象,所以我不認爲包含的值的大小事務太多了這裏。
是什麼原因導致幅度差這2的訂單?我不完全確定「JVM /集合庫優化」可以覆蓋整個差異;否則它必須是JVM/java標準庫優化的一個地獄。
謝謝,相當有見地。沒有想過ptr壓縮和分配 – jjpe 2015-02-24 14:07:47