同じクラスのシリアル化されたオブジェクトが大量 (おそらく 100K+、場合によっては数百万) あるファイルがあるとします。これらのオブジェクトを読み取り、それらを使って何かを行います。
//open stream
try{
while(true) {
Object o = ois.readObject();
foo(o);
}
}catch(EOFException){
}
//close stream...
これが完了すると、非常に不快なほど大量のオブジェクトが作成されます。私の問題は、これらのオブジェクトを制御できないことであり、GC が決定するまで解放されません。
作成される新しいオブジェクトの量に上限を設定する方法はありますか? たとえば、ファイルに 100K のシリアル化されたオブジェクトがある場合、固定サイズのプールが使用されるように readObject メカニズムを微調整する方法はありますか?
詳細
~100K のオブジェクト ファイルは、多数の小さなファイルをマージした結果です。この小さなプロセスが行っていることは、並べ替えられた csv ファイルを作成することです。