私はそれがオープンソースでなければなりません...低メモリ使用に最適化されたjava.util.Map実装について知っている人はいますか?
を通常の場所(Apacheのコモンズ、グーグル)に見ていないものを見つけることができました。
リンクリストに基づいてかなり探しています。ユースケースはマップの10'000ですが、必ずしも多くの値は入っていません。スケールアップする必要はありません。サイズが大きくなりすぎると変換できます。
いくつかの計算されたjvm値(8バイト/ java.lang.Object、4バイト/ ref)を使用するいくつかのサイズでは、HashMapは約100 + 32nバイトです。理論上の最良は12 + 20 * nです。 < - 私は小さいnのためにそれが欲しい。
リンクリストに基づくマップは「最小」とは思わない。私は、Entryオブジェクトなしで配列ベースで作成します(つまり、値は配列に直接格納されます)。これは、衝突が厄介になることを意味しますが、これを回避する方法があります。 –
先週、私はこのマップの実装を行いました(あなたのニーズに一人ではないので)。残念ながら、実装はオープンソースではありません。私はマップの必要なサイズを16(マップオブジェクトの場合)+ 16(配列の場合;切り上げた場合)+ 8 * 'size'(配列の内容の場合)に減らしました。静的メソッドのみを使用して配列を直接操作したい場合を除いて、取得できるメモリの最低使用量です。マップごとに別の16バイトを節約できます。しかし、その場合、 'Map'インタフェースの実装ではなくなります。 –