1

いくつかの XML ファイルを読み取り、それをグラフに変換したいと考えています (グラフィックではなく、モデルのみ)。しかし、ファイルが非常に大きい (2.2 GB) ため、すべての情報を保持するモデル オブジェクトはさらに大きくなります (ファイルのサイズの 4 倍...)。

ネットでグーグル検索して、オブジェクトのサイズを小さくする方法を見つけようとしました。さまざまなコレクション タイプを試しましたが、HashMap に固執したいと思います (ランダム アクセスが必要なため)。実際のキーと値は、割り当てられたメモリのほんの一部を占めています。ほとんどのハッシュ テーブルは空です...

私が完全に間違っていなければ、ガベージ コレクションは割り当てられたメモリを解放し、ハッシュマップのサイズを縮小するのに役立ちません。未使用のメモリを解放してハッシュマップを縮小する方法はありますか? または、完全なハッシュを行う方法はありますか? または、別のコレクションを使用する必要がありますか?

前もって感謝します、

セバスチャン

4

6 に答える 6

0

これに真剣に取り組んでいて、時間に余裕がある場合は、最小限の完全なハッシュに基づいて、マップインターフェイスの独自の実装を作成できます。

キーが文字列の場合は、ここにマップがあります。自分で試したことはありませんが、メモリ使用量の削減を自慢しています。

于 2011-05-10T18:57:12.717 に答える
0

ハッシュマップのメモリ フットプリントを削減してもうまくいかない場合は、いつでもデータをデータベースに入れることができます。データへのアクセス方法によっては、db の前にキャッシュを導入しても妥当なパフォーマンスが得られる場合があります。

于 2011-05-10T18:43:37.130 に答える
0

Trove コレクションを試してみてください。彼らは、java.util Collections のより時間とスペース効率の高いドロップイン代替品として宣伝しています。

于 2011-05-10T20:27:42.337 に答える
0

あなたが求めていることはあまり明確ではありません。メモリが hasmap 内に配置したオブジェクトによって使用されるのか、ハッシュマップ自体によって使用されるのかは明確ではありません。これは参照のみを保持するため、そうではありません。

いずれにせよ、を見てくださいWeakHashMap、多分それはあなたが探しているものです:それはキーが内部に保持されていることを保証しないハッシュマップです.一種のキャッシュとして使用する必要がありますが、あなたの説明から私はそうしません.それがあなたのケースであるかどうかは本当にわかりません。

于 2011-05-10T18:38:01.033 に答える