Grails и PermGen выпускают с g: link и g: render - PullRequest
0 голосов
/ 22 апреля 2010

Я некоторое время запускал Grails без каких-либо проблем, но недавно после обновления до Grails 1.1.1 я столкнулся с ужасными ошибками PermGen. До обновления такой проблемы не было.

Ошибка, по-видимому, возникает, когда в GSP используются теги <g:link> и <g:render>, хотя я не уверен, что это указывает на то, что это проблема, но скорее на тот факт, что когда теги рендерились.

Как правило, все, кто сталкивается с ошибками PermGen, рекомендуют увеличить параметры среды Java, но каков может быть источник проблемы? Это проблема Grails 1.1 / hibernate / spring?

Ошибка:

2010-04-20 05:37:03,962 INFO  [STDOUT] 05:37:03,961 ERROR [GroovyPagesServlet] Error processing GSP: 
Error executing tag <g:render>: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: 
Error executing tag <g:link>: java.lang.OutOfMemoryError: PermGen space 
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: 
Error executing tag <g:render>: 
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: 
Error executing tag <g:link>: java.lang.OutOfMemoryError: PermGen space

Ответы [ 2 ]

2 голосов
/ 02 мая 2010

Большие требования к пространству PermGen являются результатом функции автоматической перекомпиляции, которую Grails предлагает в режиме разработки. Необходимость увеличения пространства PermGen - это очень и очень маленькая цена, которую нужно платить за перекомпиляцию на лету. Эта проблема не возникает в режиме производства Grails. Необходимость большого PermGen заключается в том, что Java хранит информацию о классе в той части памяти, которая называется PermGen. Эта область памяти полностью отличается от кучи и других частей памяти. (Увеличение пространства кучи не увеличивает размер PermGen). Когда Grails перекомпилирует класс, это приводит к добавлению нового класса в PermGen (а не замену существующей информации о классе). Чем больше изменений вы вносите в режим разработки, тем больше и больше памяти PermGen расходуется.

1 голос
/ 04 мая 2010

Хорошее объяснение выше .... попробуйте увеличить его на

export JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...