- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メモリが足りないのでしょうか???)
Javaでファイルの解析と書き込み処理でOutOfMemoryErrorが発生する理由と対処方法
このQ&Aのポイント
- Javaでファイルから読み込んだデータを解析し、別ファイルに書き込む処理を作成した際に、OutOfMemoryErrorが発生する問題が発生しています。ファイルサイズが40MB程度の場合に起こります。
- 実行時のCPU使用率は100%に達しますが、メモリ使用量は最大値の半分程度であり、十分な余裕があるように見えます。しかし、メモリを使いすぎている可能性があります。
- メモリ使用量を80%程度に制限する方法はありますか?メモリ最大値に関する設定方法や、メモリ使用量の最適化について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
javaVM で利用できるヒープメモリサイズを指定できます。 java -Xmxサイズ クラスファイル という感じ。利用しているサイズは Runtime#freeMemory() で取得できます。 とはいうものの、処理がまずいんじゃないでしょうか? 巻物のように長いメソッドがあり、山のように変数を使っていて、もう利用される ことのないインスタンスが山のように抱えられている、とか。
お礼
確かに、その場しのぎのプログラムなので、 処理が力ずくというところがあります。 ファイルをあるブロック単位で読み込み、 必要データを取出しているのですが、 なるべく、不要なデータはすぐ、clearするように しているのですが、なにか忘れているのかもしれません。 依然は、200MBぐらいまでは、読み込んでくれたのですが、 別のマシーンに変わって、今回、エラーが出てしまったという次第です。 あっと、今、java -Xmxサイズを指定したら、出来ました。 ありがとうございます。大感謝!