Пермский генерал взрослеет
Недавно я обнаружил следующие факты:
В первый раз, когда я перемещаюсь по страницам своего приложения, пермский гем значительно растет. (Это нормально)
Мой возраст растет, когда я перемещаюсь по страницам своего приложения, по которым я уже прошел. Но это происходит только в том случае, если я перестаю использовать свое приложение на несколько минут. Если я этого не сделаю, то ситуация останется прежней, хотя я продолжу навигацию. Увеличение не очень, но я думаю, что это не нормальное поведение.
Я также заметил, что Пермский генерал никогда не падает или немного снижается.
Что может быть причиной этого?
Я использую Java6, Tomcat6, Hibernate, Spring 3.3.4 и JSF 1.2.
1 ответ
Ошибки и утечки PermGen сложно исследовать.
Чтобы разобраться с ними, первое, что вы можете сделать, это проверить ваши статические показатели. Ваше приложение может управлять некоторыми статическими объектами, в которых содержатся ссылки на объекты, которые должны были быть подвергнуты сборке мусора, но при этом помечены как достижимые, так как на них ссылаются эти статические элементы.
Например, вы используете Spring, а в Spring бины по умолчанию являются Singleton, поэтому они могут быть источником проблем PermGen.
Чтобы узнать больше об объектах в памяти, вы можете использовать некоторые инструменты профилирования, такие как VisualVM. Это может помочь вам выяснить, сколько экземпляров данного класса содержит Tomcat, и может дать вам представление о том, где может быть утечка.
Чтобы узнать больше об ошибках и проблемах PermGen и PermGen, вы можете взглянуть на java.lang.OutOfMemoryError: Демистифицирована ошибка пространства PermGen