Как долго используются ресурсы (дескриптор файла и память) для временных файлов Java (jar_cache ####. Tmp)? - PullRequest
1 голос
/ 28 сентября 2010

Я запускаю приложение Java в системе Linux. Я заметил, что приложение, похоже, потребляет много файловых дескрипторов (через несколько дней я получаю «Too many open files»).

Итаккогда я использую команду 'lsof' для вывода всех файлов, связанных с приложением Java, я получаю что-то вроде этого:

java  2690  root  239u  REG  3,2  428057  94300 /tmp/jar_cache5782499018536796385.tmp (deleted)
java  2690  root  240u  REG  3,2  58955   94360 /tmp/jar_cache3818842806647031366.tmp (deleted)
java  2690  root  241u  REG  3,2  28673   94301 /tmp/jar_cache8793213887943479521.tmp (deleted)
java  2690  root  242u  REG  3,2  67115   94302 /tmp/jar_cache3648070144390426051.tmp (deleted)

Я только показываю здесь 4, но на самом деле их 87 ичисло растет со временем.

Из того, что я прочитал в Интернете, Java использует эти временные файлы для внутренних целей или что-то в этом роде, и они нормальные.

Как видно из приведенного выше вывода, они удалены, иЯ подтверждаю, что они не существуют физически в файловой системе.

Но я боюсь, что это не освобождает файловые дескрипторы или любую связанную с ними память ... Кто-нибудь знает что-нибудь об этом?/tmp/jar_cache####.tmp 'файлы или у вас есть опыт работы с ними?

1 Ответ

1 голос
/ 30 сентября 2010

Файлы / tmp / jar_cache создаются при загрузке jar через URLClassloader. Я подозреваю, что некоторые компоненты приложения перезагружаются, и это приводит к удалению старых файлов jar_cache и созданию новых. Тот факт, что файловые дескрипторы не выпущены, кажется проблемой JVM - я видел такое же поведение и в той же версии JDK.

Есть комментарии к этой ошибке JVM: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4166799

хотя проблема была закрыта некоторое время назад.

...