主要コレクションクラスの内部メモリ消費量一覧

Javaの主要コレクションクラスの内部メモリ消費量を、一覧表にまとめてみました。メモリ消費量がコレクションの要素数に対して線形増加すると見なした場合の、実測を基にした推定値です。

表を見ると、TroveのTHashMapとTHashSetのメモリ効率が非常に優秀だと分かります。Troveはプリミティブ型のコレクションライブラリとして使われる場面が多いと思いますが、THashMap / THashSetも積極的に使っていきたいですね。

JRE 1.6.0

クラス 消費量(bytes)
ArrayList 4 * n
LinkedList 24 * n
HashMap / HashSet 32 * n
TreeMap / TreeSet 32 * n
LinkedHashMap / LinkedHashSet 40 * n

Commons Collections 3.2

クラス 消費量(bytes)
HashedMap 32 * n
LinkedMap 40 * n
ListOrderedMap / ListOrderedSet 40 * n
DualHashBidiMap 64 * n
DualTreeBidiMap 64 * n
LRUMap 80 * n
TreeBidiMap 152 * n

GNU Trove 2.0.2

クラス 消費量(bytes)
THashSet 8 * n
THashMap 16 * n
TLinkedList 0 (リンクを自前で用意する必要あり)