如何将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)
Run Code Online (Sandbox Code Playgroud)
我所观察到的是,每次运行都需要更长的时间.首先,它需要几纳秒,但是当应用程序因PermGen内存不足错误而崩溃时,此过程有时需要超过10秒......来实例化一个对象!
我采取了一些Heap Dumps并发现CallSiteClassLoader从以前设置的对象中获取了大量内存.读完这个帖子后,我决定直接更改WAR中的groovy jar.现在应用程序运行顺利,并且在几次堆转储之后,似乎没有内存泄漏.
但是我生成的每个WAR都会继续使用groovy 1.7.7,我必须手动更改它.
谢谢!
您可以取消注释mavenCentral()(在存储库下)并添加依赖项
compile 'org.codehaus.groovy:groovy-all:1.7.9'
Run Code Online (Sandbox Code Playgroud)
(在依赖项下)在 BuildConfig.groovy 中。
不知道这个是否值得推荐。至少构建会像您现在手动那样使用 groovy 1.7.9 打包您的应用程序。
grails run-app我猜仍然会使用 1.7.7,但这可能不是问题,因为您可能会在开发过程中遇到永久生成问题之前重新启动。
我选择保留 Grails 1.3.6,直到发布带有 Groovy 1.7.9 或更高版本的 Grails 版本。