2016-07-19 4 views
0

Существует Java-программа, которая считывает файлы из папки, обрабатывает и записывает выходные файлы в другую папку. Он работал в течение 4 часов и произвел несколько файлов, но затем не кинув следующее сообщение об ошибке:java открытые файлы не очищаются, даже когда процесс убит

"too many files" 

Затем я изменил программу, чтобы закрыть все (BufferReader и BufferWriter) и снова начал процесс. Но этот процесс времени не удалось сразу после запуска бросая следующую ошибку:

java.io.FileNotFoundException: <file> (Too many open files) 

Затем я попытался запустить LSOF и искал процесса, который оказывает наиболее нет открытых файлов. Я понял, что это NetworkManager. Но я не был уверен, должен ли я убить этот процесс или нет. Поэтому я перезапустил машину. Даже после этого, когда я запускал java-программу, у меня все еще была такая же ошибка.

В худшем случае возможно, что мой код по-прежнему имеет некоторые утечки с точки зрения не закрытия всего, но все же он не работает сразу после запуска процесса. Поэтому я чувствую, что что-то лежит в системе с предыдущего запуска. Также, если я запускаю тот же процесс на какой-либо другой машине, он работает в течение нескольких часов перед сбоем.

+0

Покажите нам свой код, чтобы получить четкие ответы !! – Azodious

ответ

1

Вы не можете сохранить ресурс между прогонами программы, даже если хотите. Вы могли бы оставить свою систему без достаточных ресурсов в теории, хотя это маловероятно, но перезагрузка машины должна исправить это.

Что более вероятно, что файлов, которые у вас есть, достаточно, чтобы вызвать запуск программы из файлов. Попробуйте переименовать каталог, в котором хранятся файлы, и начиная с пустого, чтобы подтвердить это.