Apachie POI HSSF を使用して作成されたオブジェクトは、通常の Java gc によって再利用されますか、それとも何か他のことをする必要がありますか?
テストデータのファイルを読み取り、データ分析のxlsファイルを書き込むJavaプログラムがあります。ワーキング セットのサイズ (Process Explorer で報告) が処理されるファイルごとに約 3MB 大きくなることに気付き、(gc を明示的に呼び出しているにもかかわらず) POI オブジェクト (セル、行、シート) が各ファイルが書き込まれると、それらへのポインターが残っていなくても、再利用されません。
私はこれを予期していなかったので、コードは現在、必要になるたびに新しいオブジェクト (セルなど) を作成しています。私が見た 1 つの提案は、必要なシート、行、セルを一度作成し、各 xls ファイルを書き出す前に新しい値を設定し続けることです。これは実際にメモリ使用量を削減しますか、それともセルに新しい値を設定するとメモリが消費されますか?
問題が発生した場合に備えて、私は poi-3.9-20121203 を使用しています
処理するファイルが数千になり、メモリ不足エラーが発生するため、問題が発生しています。(さまざまな理由から、一度に 500 を実行するよりも、すべてを 1 回のパスで実行できた方がはるかに簡単です。)
推奨事項や提案に感謝します。