Мы увеличиваем пространство памяти permgen в нашем приложении все выше и выше, и я пытаюсь выяснить, есть ли утечка какого-то рода, попадающая в область permgen. Мы не выполняем горячие действия отмены / повторного развертывания, но у нас есть много прокси, как динамических, так и сгенерированных CGLIB. Мы также делаем некоторые сложные биты загрузчика классов для поддержки различных вариантов использования, и я подозреваю, что они также могут быть возможными причинами потерь permgen.
Таким образом, я запускаю jmap -permstat в нашем запущенном приложении, надеясь получить некоторое представление о том, что может заполнить наше пространство permgen. (Я также запускаю обычный дамп кучи как с живыми, так и с мертвыми объектами, чтобы отследить подсказки, которые могут быть получены из выходных данных permstat).
Однако из 2400 загрузчиков классов, перечисленных в jmap permstat, ВСЕ, кроме загрузчика классов начальной загрузки, перечислены как «мертвые». Это не имеет смысла, поскольку приложение определенно работает и работает.
Насколько я понимаю, jmap сообщит о загрузчике классов как о "мертвых", если он будет иметь право на сборку мусора, но я, должно быть, ошибаюсь ...
Чего мне не хватает? Что здесь означает «мертвый»? Поиск в гугле не дает много ответов, кроме возможного недопонимания, которое я имею здесь.