2012-01-12 7 views
0

프런트 엔드 서버가 매우 빨랐던 큰 응용 프로그램에서이 현상이 나타났습니다. PerGen은 매우 빨랐습니다. 최악의 경우 모든 요청에 ​​대해 계속 증가했습니다. 응용 프로그램 서버에 대한 요청을 수행하십시오. 나는 바람둥이 6.0.33, 바람둥이 6.0.029 모두에 직면했다.Struts2 PermGen 메모리 부족 오류

문제를 분리하기 위해 나는 스트럿을 공백으로 골랐다. 그리고 나의 당황 스러움에 그것은 같은 경향을 보여 주었다. 이게 정상인가? maven (mvn archetype : generate)을 사용하여 2.2.1, 2.2.1.1, 2.2.3.1과 같은 struts2의 몇 가지 버전을 확인해 보았고 부두에서 실행 한 후 Permgen 공간이 모든 요청에 ​​채워져 있음을 확인했습니다. 2-3KB. 나는 struts blank와 jetty-6.1.21에서 테스트를하고 있습니다.

PermGen이 요청 횟수의 함수로 증가하고 있기 때문에 얼마나 많은 가치가 있다고 생각합니까?

+0

1. 웹 응용 프로그램에서 여러 번 호출하면 PermGen 공간이 올라 가게됩니까? 'inst = Class.forName ("com.xxx.yyy.MyClass"). newInstance(); ... inst = null;'2.이 클래스는 언로드되고 나중에 가비지 수집됩니까? –

+0

당신의 프로파일 러 세부 사항에 대한 세부 사항이 없기 때문에 아무에게도 말하기 어렵습니다. –

+0

@Umesh 내가 알고 싶은 것은 struts-2와 관련된 알려진 문제가 있는지입니다. 그리고 위 시나리오에서 inst = Class.forName ("com.xxx.yyy.MyClass"). newInstance(); ... inst = null; PermGen 공간 메모리 누수가 발생할 수 있습니다. –

답변

4

확실하게 알 수있는 유일한 방법은 프로파일 러를 부착하고 어떤 클래스가 가장 많은 메모리를 차지하는 지 살펴보고 메모리 누수를 찾아내는 것입니다. 크래시시 힙을 덤프하고 결과 파일을 프로파일 러에로드하여 힙이 충돌했을 때 힙의 상태를 볼 수 있도록 jvm을 구성 할 수 있습니다.

Struts는 많은 프로덕션 웹 응용 프로그램에서 사용됩니다. 나는 그것이 당신의 앱에 더 많은 문제가 있다고 생각한다.