Ответ 1
Существует неудовлетворительное, но простое решение: не hotdeploy в производственных условиях. Вы можете настроить кластер из двух контейнеров сервлетов, и они будут обновлять по одному с перезагрузкой.
У меня есть утечка памяти пермского поколения, которую я знаю. Профилирование с помощью jvisualvm показывает, что при горячем развертывании (например, остановка и запуск приложения без уничтожения JVM, в tomcat, WebSphere, WebLogic и т.д.) - пространство PermGen постоянно увеличивается.
После прочтения, используя jhat и другие дополнительные инструменты, я понял, что у меня, вероятно, есть ссылка на WebAppClassLoader
из класса где-то в его загрузчиках родительского класса.
Я не мог прикрепить его, хотя я сделал несколько массивных запросов на основе JavaScript на jhat
Нет ли простой утилиты, которая выясняет, кто несет ответственность за вас, загрузчик классов, чтобы не собирать мусор (таким образом, позволяя сборку мусора классов, загружаемых им)?
Я пробовал JProfiler, jvisualvm, jhat и много Google
всем друзьям LMGTFY - я провел около полутора дней, читая форумы с помощью пошаговых инструкций, не повезло. Я ищу утилиту или код, который выводит:
Объект X класса Y - единственный корень GC, который не позволяет удалить ваши классы.
Существует неудовлетворительное, но простое решение: не hotdeploy в производственных условиях. Вы можете настроить кластер из двух контейнеров сервлетов, и они будут обновлять по одному с перезагрузкой.
Реальности частых перераспределений... Лучше всего вы можете увеличить размер perm gen с помощью -XX: MaxPermSize = 256 м. Это может принести вам несколько перераспределений за перезапуск jvm. Или читайте на http://my.opera.com/karmazilla/blog/2007/03/15/permgen-strikes-back
Остерегайтесь того, что если загрузчики классов вообще не могут быть gc-ed, вождение с jvm вообще не поможет. Вам стоит забыть о частых развертываниях, особенно в производстве, но тем не менее.
Я использовал метод с этого сайта, и это помогло. http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/
Несколько указателей здесь, http://minmaxmim.blogspot.com/2010/01/javalangoutofmemoryerror-java-heap.html
также проверьте статью javalangoutofmoryoryerror-permgen-space.