2013-03-18 2 views
0

내가 프로젝트에 Quartz 스케쥴러 프레임 워크와의 log4j 라이브러리를 추가 한 이후 톰캣 6톰캣 : OutOfMemoryError를 Permgen 공간

를 사용하여 JSP 응용 프로그램을 개발하고는, Tomcat은 다시 배포 할 때이 예외를 던지기 시작합니다.

나는 문제의 원인에 대해 읽었으며, 이제는 클래스 로더와 함께 있어야한다는 것을 알고있다.

그래서 일부 클래스를 자동으로로드하는 로거 라이브러리 때문에 문제가 발생할 수 있습니다.

어떻게이 문제를 해결할 수 있습니까? log4j.properties 파일을 사용하지 않고 로거를 설정하여 클래스 로더가 올바르게 작동하는지 확인하는 다른 방법이 있습니다.

+2

문제는 원하는 작업을 수행 할 수있는 충분한 양의 permgen 공간이 없다는 것입니다. 같은 질문에 대한 다른 대답들 모두가 그렇듯이 말입니다. [여기] (http://stackoverflow.com/questions/1371683)를 클릭하고 지침을 따르십시오. 그래도 작동하지 않으면 정확한 예외 메시지 *를 붙여 넣으십시오. – parsifal

+0

위로 투표하십시오. 문제는 단지 "메모리를 늘리면"더 깊은 것 같습니다. 나는 교실에 대한 더 많은 정보를 얻으려고 노력할 것입니다. 저는 Quartz 스케쥴러를 사용하고 devel에서 같은 문제를 겪고있는 Pentaho를 사용합니다. – borjab

답변

4

한 가지 방법은

덕분에 아래

-XX:MaxPermSize=256m 

에 다음 JVM 인수를 추가하여 permgen 공간을 증가 그러나 그것은 단지 OOM 오류가 지연됩니다. 몇 번이고 다시 배포하면 메모리의 permgen으로 다시 실행됩니다. 이유는이 기사에서 매우 명확하게 설명되어 있습니다. 여기서는 다시 설명하지 않겠습니다. http://frankkieviet.blogspot.com/2006/10/classloader-leaks-dreaded-permgen-space.html. 죄송합니다.이 문제를 방지하기 위해 로거를 다르게 설정하는 다른 방법이 없습니다. 실제로 MaxPermSize를 늘린 다음 배포 전에 서버를 주기적으로 늘립니다.

+0

당신이 대답에했던이 링크는 매우 유용합니다. 나는 비슷한 것을 읽었지만 그것을 해결하는 것은 매우 어렵다고 설명하지는 못했습니다. 감사. – nashuald

관련 문제