我所遇到的一个奇怪的情况:学生(我在这方面的教学助理)必须实现自己的单链表(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