Изменить Grails 'Groovy версия - PullRequest
6 голосов
/ 11 марта 2011

Как изменить версию Groovy, используемую в Grails 1.3.7, на версию Groovy 1.7.9?

У меня такая проблема в приложении Grails 1.3.7, в котором каждую минуту процесс Quartz создает около 500 новых объектов, таких как:

class Foo{
 Bar bar
 Date d = new Date()
 int v
}

def f = new Foo(bar:b, v:value)

Что я наблюдаю, так это то, что при каждом запуске это занимает больше времени. Сначала это занимает несколько наносекунд, но к тому моменту, когда приложение завершает работу с ошибкой PermGen из памяти, этот процесс иногда занимает более 10 секунд ... для создания объекта!

Я взял несколько дампов кучи и обнаружил, что CallSiteClassLoader занимал огромное количество памяти у ранее установленных объектов. Прочитав эту ветку , я решил напрямую изменить заводные банки в моей WAR. Теперь приложение работает нормально, как и должно быть, и снова, после нескольких дампов кучи, утечки памяти, похоже, отсутствуют.

Но каждая генерируемая мной WAR продолжает приходить с groovy 1.7.7, и мне приходится вручную ее менять.

Спасибо!

1 Ответ

2 голосов
/ 12 марта 2011

Вы можете раскомментировать mavenCentral()репозитории ) и добавить зависимость

compile 'org.codehaus.groovy:groovy-all:1.7.9'

зависимости ) в BuildConfig.groovy.

Не знаю, рекомендуется ли это.По крайней мере, сборка будет упаковывать ваше приложение с Groovy 1.7.9, как вы делаете сейчас вручную.grails run-app по-прежнему будет использовать 1.7.7 Я думаю, но это, вероятно, не проблема, так как вы можете перезапустить перед тем, как столкнуться с проблемами permgen во время разработки.

Я решил остаться на Grails 1.3.6 до версии Grailsс Groovy 1.7.9 или выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...