Я занимаюсь разработкой в среде Linux, и система предназначена для непрерывной работы в течение длительного периода времени. После ночного теста мы видим исключение FileNotFoundException с сообщением «Too Many Files Open». Мы начали регистрировать вывод команды lsof в разное время в системе, чтобы увидеть, можем ли мы увидеть, что происходит. Мы заметили много безымянных открытых труб. Поэтому я решил, что это связано с тем, что файловые потоки не закрываются. Я искал в источнике все используемые * Stream-объекты и убедился, что все они закрываются в блоке finally {}. Существуют ли какие-либо другие типы объектов Java, которые я мог бы найти, которые я не мог бы закрыть, что могло бы открыть все эти безымянные каналы?
Кроме того, мой ulimit - 1024, и я также искал * Writer и убедился, что все они тоже закрываются.