フォルダーからファイルを読み取り、何らかの処理を行い、出力ファイルを別のフォルダーに書き込む Java プログラムがあります。4 時間実行され、いくつかのファイルが生成されましたが、次のエラーをスローした後に失敗しました。
"too many files"
次に、すべて (BufferReader と BufferWriter) を閉じるようにプログラムを修正し、プロセスを再開しました。しかし、今回は次のエラーをスローして開始直後にプロセスが失敗しました。
java.io.FileNotFoundException: <file> (Too many open files)
次に、lsof を実行してみて、開いているファイルがほとんどないプロセスを検索しました。それがNetworkManagerだと気づきました。しかし、そのプロセスを強制終了する必要があるかどうかはわかりませんでした。だから私はマシンを再起動しました。その後もJavaプログラムを実行しても、同じエラーが発生しました。
最悪の場合、すべてを閉じないという点でコードにまだリークがある可能性がありますが、プロセスを開始した直後にまだ失敗しています。そのため、前回の実行からシステムに何かが横たわっているような気がします。また、他のマシンで同じプロセスを開始すると、失敗するまで何時間も実行されます。