【发布时间】: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 中不断出现,我必须手动更改它。
谢谢!
【问题讨论】: