【问题标题】:Change Grails' Groovy version更改 Grails 的 Groovy 版本
【发布时间】:2011-07-13 16:14:15
【问题描述】:

如何将 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 秒...实例化一个对象!

我进行了几次堆转储,发现 CallSiteClassLoader 从以前安装的对象中占用了大量内存。在阅读了thread 之后,我决定直接更改我的 WAR 中的 groovy jar。现在应用程序运行正常,并且在几次堆转储之后,似乎没有内存泄漏。

但是我生成的每个 WAR 都在 groovy 1.7.7 中不断出现,我必须手动更改它。

谢谢!

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    您可以取消注释 mavenCentral()(在 repositories 下)并添加依赖项

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

    (在 dependencies 下)在 BuildConfig.groovy 中。

    不知道是否推荐。至少构建将像您现在手动一样使用 groovy 1.7.9 打包您的应用程序。 我猜grails run-app 仍将使用 1.7.7,但这可能不是问题,因为您可能会在开发过程中遇到 permgen 问题之前重新启动。

    我选择继续使用 Grails 1.3.6,直到发布带有 Groovy 1.7.9 或更高版本的 Grails 版本。

    【讨论】:

    • 取消注释mavenCentral()也会删除其他依赖项吗?
    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多