フォルダからファイルを読み込み、処理して別のフォルダに出力ファイルを書き込むJavaプログラムがあります。これは、4時間走り、いくつかのファイルを生成するが、その後、次のエラーを投げた後に失敗しました:プロセスが強制終了されてもJavaオープンファイルはクリーニングされません
"too many files"
は、その後私はすべて(BufferReaderとBufferWriter)を閉じるようにプログラムを修正して、再度プロセスを開始しました。しかし、今回のプロセスはちょうど次のエラーをスローすることによって開始した後に失敗しました:
java.io.FileNotFoundException: <file> (Too many open files)
をそれから私はlsofを実行しようと、開いているファイルのないほとんどを持っていないプロセスを探しました。私はそれがNetworkManagerであることに気づいた。しかし、私はそのプロセスを殺すべきかどうかはわかりませんでした。そこでマシンを再起動しました。それ以降もJavaプログラムを実行すると、同じエラーが出ます。
最悪の場合、私のコードではすべてをクローズしないという意味でいくつかのリークが残っている可能性がありますが、プロセスを開始した直後でもまだ失敗している可能性があります。だから、前回とは違って、システムに嘘をついているような気がします。また、他のマシンで同じプロセスを開始すると、何時間も実行されてから失敗します。
明確な回答を得るためのコードを表示してください。 – Azodious