2011-03-11 68 views
5

如何将Groils 1.3.7使用的groovy版本更改为groovy 1.7.9?更改Grails的Groovy版本

我在其中的每一分钟石英晶过程实例一些像这样的500个新的对象一个Grails应用1.3.7有这个问题:

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

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

我正在观察的是,在每次运行时,这需要更长的时间。起初,这需要几纳秒,但是到应用程序崩溃时,PermGen内存不足错误,这个过程有时需要超过10秒...来实例化一个对象!

我已经采取了一些堆转储,并发现一个CallSiteClassLoader从以前安装的对象中获取大量内存。看完这个thread后,我决定直接更换我的WAR中的Groovy jar。现在应用程序正常运行,并且在几次堆转储之后,似乎没有内存泄漏。

但是我生成的每个WAR,都会随着groovy 1.7.7而来,我不得不手动修改它。

谢谢!

回答

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版本。

+0

将取消注释'mavenCentral()'也删除其他依赖项? – 2015-04-10 14:05:20