ファイルから大量のデータを読み取り、それをExcelファイルに書き込むコードがあります。直面している問題は、データがヒープサイズの制限を超えると、メモリ不足の例外がスローされることです。ヒープサイズを増やしてみましたが、プログラムは正常に実行されました。しかし、問題は、私のマシンのRAMが限られており、ヒープに巨大なスペースを割り当てると、マシンが非常に遅くなることです。それで、コードを実行するためにヒープサイズを増やす必要がないように、データの制限を処理した後にメモリを解放する方法はありますか?私はこの種のものに比較的新しいので、いくつかのアイデアを提案してください
質問する
2767 次
3 に答える
2
このような場合、コードを再構築して、データの小さなチャンクで機能するようにする必要があります。小さなバッファを作成し、そこにデータを読み込んで処理し、Excel ファイルに書き込みます。次に、次の繰り返しに進み、同じバッファーに読み込みます。
もちろん、使用している Excel ライブラリはこのように機能する必要があり、一度にファイル全体を書き込む必要はありません。
于 2012-05-04T06:59:25.913 に答える
0
DirectByteBufferはBuffer.allocateDirect(byteSize);で使用できます。またはMemoryMappedFileの場合、ヒープメモリからメモリスペースを使用します。
于 2012-05-04T07:13:59.383 に答える
0
JXL API は、この種の制限されたバッファー機能を提供すると思います。これはオープン ソース API です。 http://jexcelapi.sourceforge.net/
于 2012-05-04T07:11:18.420 に答える