java.lang.OutOfMemoryError: пространство PermGen - PullRequest
4 голосов
/ 28 мая 2011

Как я могу предотвратить это?

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
Exception in thread "Thread-2" java.lang.OutOfMemoryError: PermGen space

Это происходит, например, если я часто перезагружаю страницу с данными. Я так понимаю, что с сборщиком мусора что-то не так ..

Я использую Eclipse Java EE IDE, JSF2, richfaces4

Ответы [ 3 ]

10 голосов
/ 28 мая 2011

Это специфично для Tomcat. Это довольно плохой hotpublisher / hotdeployer, и он страдает от утечек памяти. Я бы предложил отключить автопубликацию на экране конфигурации сервера в Eclipse и просто перезапустить Tomcat вручную, если вы хотите отразить сохраненные изменения. В любом случае перезапуск не должен занимать много времени, если у вас есть только один проект.

Glassfish, например, гораздо надежнее (и быстрее!), Когда дело доходит до горячей публикации. Что касается того, как установить Glassfish и интегрировать его в Eclipse для разработки JSF 2.0, проверьте это руководство .

0 голосов
/ 30 августа 2013

Вы должны выделить больше места для PermGenSpace JVM tomcat.

Это можно сделать с помощью аргумента JVM: -XX:MaxPermSize=128m

По умолчанию пространство PermGen составляет 64M (и оно содержит все скомпилированные классы, поэтому, если у вас много jar (классов) в вашем пути к классам, вы действительно можете заполнить это пространство).

Кроме того, вы можете отслеживать размер пространства PermGen с помощью JVisualVM и даже проверять его содержимое с помощью YourKit Java Profiler

0 голосов
/ 14 июня 2011

Если у вас есть больше проектов в папке веб-приложений, это исключение придет. Удалите некоторые проекты, это исключение не произойдет.

...