Есть веб-приложение (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 или кого там, чтобы оно работало как раньше.