2011-03-11 66 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