私はpatricia trie(https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/trie/PatriciaTrie.html)のディスクにシリアル化されたオブジェクトを持っています。ディスク上では、約7.4GBを占めます。私は64 GBのRAMサーバーを使用しています。デシリアライズすると、対応するプロセスのメモリ消費量は40 GBまで増加します。 Serialized object size vs in memory object size in Javaという最高の投票回答は、「メモリ内のサイズは、通常、シリアライズ可能なサイズの2倍から2倍の間になります」と言っているため、これは賢明ですか?私はメモリサイズが15 GBを超えないことを期待していましたが、40 GBはあまりにも多くのプロセスがロードされるほどです。Java:シリアル化されたJavaオブジェクトのサイズとデシリアライズ時のメモリ消費の大きな違い
私はhttp://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.htmlをメモリのサイズ測定に使用すると考えましたが、Calculate size of Object in Javaは「オブジェクトサイズの実装固有の近似を得るために使用できる」と言います。だから、もう一度おおよその目安になるでしょう。
ここには何かがありますか?私はファイルを閉じて、バッファリングされたリーダーも閉じています。すべての記憶を奪うことができますか?私はコーポレート・ポリシー上の理由からコードを共有することはできません。ヘルプや指針は高く評価されます。ありがとう
? –
サイズは通常、オブジェクトの種類によって異なります。メモリオブジェクトには、基本クラスから継承された、シリアル化されていないプロパティ/フィールドが含まれます。 – user5226582
@JoeriHendrickx Xmxは60Gに設定されています。実行コマンドはjava -Xmx60g -d64 ... – pandeconscious