Этот проект мне передали, поэтому я мало о нем знаю. Существует метод, в котором используется журнал (java.util.logging.Logger), и он создает два файла журнала:
Первый файл: fileName.log
Второй файл: fileName.log.lck
В Linux, когда я делаю lsof
, я вижу эти два файла как открытые. Как мне закрыть эти два файла?
Причина, по которой я хочу закрыть эти файлы, заключается в том, что этот метод запускается несколько раз в день, и через пару недель количество открытых файлов достигает предела (около 1000), после чего наша система перестает работать. Когда мы перезапускаем наш процесс («Контроллер заданий», который ведет журнал), количество открытых файлов журнала становится равным 0, и он снова работает.
Это то, что было сделано для ведения журнала
private static Logger log = Logger.getLogger(MyClass.class.getPackage().getName());
try{
log.logp(Level.SEVERE, "com.MyClass", "run", "It failed");
}
Это то, что я пытался сделать, чтобы закрыть файлы в блоке finally, но это не сработало.
finally{
Handler[] handler = log.getHandlers();
for(Handler h: handler){
h.close();
}
}
close()
). Если вам действительно нужно открыть несколько файлов, можно увеличить лимит. - person Brendan Long   schedule 12.10.2012finally
блоком? Кажется, это правильный способ сделать это. Вы получаете сообщение об ошибке или просто не закрываете файлы? - person Brendan Long   schedule 12.10.2012