Finalizer com.sun.xml..UnmarshallerImpl сожрал всю память
От: vsb Казахстан  
Дата: 10.10.18 11:07
Оценка:
Есть веб-приложение (Tomcat/Wicket если это важно). Работает сейчас на JVM 7/Tomcat 7 без проблем. Обновил JVM до 8 и Tomcat до 8. Даже памяти больше дал (2 гига, пробовал 4 гига). Работает нормально на вид (жрёт около 500 МБ под нагрузкой). Но в определённый момент перестаёт работать (относительно внезапно, т.е. сутки работало, час назад проверял — нормально, а тут раз и всё). Снял дамп, память кончилась, видно, что вся память ушла в java.lang.ref.Finalizer который пытается финализировать com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl. Каждый такой финалайзер весит около 310 КБ ну и их вроде несколько тысяч. В самом приложении используются веб-сервисы. Каких-то изменений кода не было. Нашёл какой-то код этого класса, там что-то вроде

    protected void finalize() throws Throwable {
        try {
            ClassFactory.cleanCache();
        } finally {
            super.finalize();
        }
    }


В какую сторону смотреть? Пока даже не код хочется пофиксить, а обновить JVM и Tomcat, т.е. как-то подобрать настройки GC или кого там, чтобы оно работало как раньше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.