2011-03-11 9 views
5

¿Cómo puedo cambiar la versión groovy utilizada por Grails 1.3.7 a la maravillosa 1.7.9?Cambiar la versión Groovy de Grails

estoy teniendo este problema en una aplicación Grails 1.3.7 en la que cada minuto un proceso de cuarzo instancia unos 500 objetos nuevos como este:

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

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

Lo que estoy observando es que en cada carrera, esto está tomando más tiempo. Al principio, lleva unos nanosegundos, pero cuando la aplicación falla con un error PermGen sin memoria, este proceso toma, a veces, más de 10 segundos ... ¡para crear una instancia de un objeto!

He tomado algunos Heap Dumps y encontré que un CallSiteClassLoader estaba tomando una enorme cantidad de memoria de objetos previamente instalados. Después de leer esto thread decidí cambiar directamente el tarro groovy en mi GUERRA. Ahora la aplicación está funcionando sin problemas como debería, y nuevamente, después de algunos Heap Dumps, parece que no hay pérdidas de memoria.

Pero cada WAR que genero, sigue viniendo con groovy 1.7.7 y tengo que cambiarlo manualmente.

Gracias!

Respuesta

2

Se podría eliminar el comentario mavenCentral() (bajo repositorios) y añadir la dependencia

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

(bajo dependencias) en BuildConfig.groovy.

No sé si esto se recomienda. Al menos, la compilación empaquetará su aplicación con maravilloso 1.7.9 como lo hace manualmente ahora. grails run-app seguirá usando 1.7.7 Supongo, pero eso probablemente no sea un problema, ya que puede reiniciar antes de encontrarse con problemas de permgen durante el desarrollo.

Opté por permanecer en Grails 1.3.6 hasta que se lanzara una versión de Grails con Groovy 1.7.9 o superior.

+0

descomentando 'mavenCentral()' eliminar otras dependencias también? –

Cuestiones relacionadas