2016-04-21 6 views
3

В настоящее время я изучаю некоторые из проблем с метапространством, которые мы испытывали недавно. Одним из главных виновников, по-видимому, является загрузка дублирующих классов при перераспределении WAR. Попробовав его локально, только с одним из наших WARS, путем кучи демпинга после полного развёртывания, я вижу, что большинство экземпляров, созданных приложением, все еще там (даже после сбора мусора).Redeploying on wildfly cause outofmemory: metaspace

Из кучи кучи, я вижу, что это похоже на ManagedThreadFactoryImpl, который держится за ссылки.

Есть ли что-нибудь, что я могу сделать/добавить в процесс выключения приложения, чтобы он очистился после себя?

Все наши ВОЙНЫ являются весенними приложениями, большинство из них используют планирование/асинхронные элементы.

Мы используем JDK8 с Wildfly 8.2

+0

Такая же проблема с JDK8 и wildfly 10. – FransGuelinckx

ответ

0

Похоже, что загрузчиков классов не разгрузки. Попробуйте Java Mission Control (JMC) и запишите пример использования. Это позволяет перейти к определенному моменту времени записи и отладить проблему. Он дает моментальный снимок классов, загруженных в определенное время с помощью stacktrace, threaddumps и многих важных вещей.

JMC включен в JDK. Вы можете найти более подробную информацию здесь: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr002.html#BABIBBDE

Вам не нужно проходить через боль от кучи дампов, а затем ждать инструмента для его анализа.