2011-03-11 5 views
5

Grails 1.3.7에서 사용되는 Groovy 버전을 Groovy 1.7.9로 변경하려면 어떻게해야합니까? ,Grails의 Groovy 버전 변경

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

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

내가 관찰하고있어 각 실행에 있다는 것입니다 :

은 내가 석영 프로세스가이 같은 일부 (500) 새로운 객체를 인스턴스화하는 모든 분의 Grails를 1.3.7 응용 프로그램에서이 문제가 있어요 이것은 오래 걸리고 있습니다. 처음에는 몇 나노초가 걸렸지 만 PermGen 메모리 부족 오류로 응용 프로그램이 충돌 할 때까지는이 프로세스가 때로는 10 초 이상이 걸렸습니다 ... 객체를 인스턴스화하는 경우가 있습니다!

나는 힙 덤프를 몇 개 가져 왔고 CallSiteClassLoader가 이전에 불러 온 개체에서 엄청난 양의 메모리를 사용하고있는 것으로 나타났습니다. 이것을 읽은 후 thread 나는 내 WAR에서 그루비 단지를 직접 바꾸기로 결정했습니다. 이제는 응용 프로그램이 정상적으로 실행되고 있으며, 몇 가지 힙 덤프 후에 메모리 누수가없는 것으로 보입니다.

그러나 내가 생성하는 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 문제가 발생하기 전에 다시 시작해야하므로 문제가 아닙니다.

Groovy 1.7.9 이상이 설치된 Grails 버전이 릴리스 될 때까지 Grails 1.3.6을 유지하기로 결정했습니다.

+0

는'mavenCentral()'의 주석을 제거하면 다른 의존성도 제거됩니까? –