改变Grails的Groovy版本

时间:2011-03-11 17:33:40

标签: grails groovy

如何将Grails 1.3.7使用的groovy版本更改为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秒......来实例化一个对象!

我采取了一些Heap Dumps并发现CallSiteClassLoader从之前设置的对象中获取了大量内存。读完thread后,我决定直接改变我的WAR中的常规罐子。现在应用程序运行顺利,并且在几次堆转储之后,似乎没有内存泄漏。

但是我生成的每个WAR,都会继续使用groovy 1.7.7,我必须手动更改它。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以取消注释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,直到发布了Groovy 1.7.9或更高版本的Grails版本。