2012-12-14 2 views
2

Windows Tomcat 서버에서 여러 도구를 실행하려고합니다. 서버가 잘 시작하고 Tomcat의 관리자 페이지도 볼 수 있습니다. 그러나 도구를 열면 "OutOfMemoryError : PermGen space"가 발생합니다. 내 catalina.bat의를 MaxPermSize 설정에 많은 노력이 내 CATALINA_OPTS입니다 :MaxPermSize 무시 된 Tomcat 7

set CATALINA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms64m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled" 

내 Tomcat 서버 옆에 JVisualVM를 실행하면, 내가 인수가 아니라 선택됩니다 것을 볼 수 있습니다 : overview

하지만 모니터 탭으로 가서 PermGen을 확인하면 내 CATALINA_OPTS를 설정 한 512 대신 최대 67MB가됩니다. 그래서 인수를 설정하지만, Tomcat은 permgen

는 이미 몇 시간이 문제를 해결하려고 .. 그들을 무시하지만 성공하지 ..

누구입니까?

답변

5

세트에서 ""을 제거하면 괜찮습니다. 왜 그런지는 아직 모릅니다. 하지만 그 대답을의

세트 CATALINA_OPTS = -Djava.awt.headless = 사실 -Dfile.encoding = UTF-8 -server -Xms64m -Xmx512m -XX : PermSize = 128m -XX :를 MaxPermSize = 512m -XX : + CMSClassUnloadingEnabled -XX : + CMSPermGenSweepingEnabled

- Btw는

을 편집, 난 당신이 그렇지 않으면 다른 2 개 CMS 매개 변수 depening, 2 중 하나가 오직 필요한 일을 할 (그리고하지 않을뿐만 아니라, UseConcMarkSweepGC를 원한다고 생각 JVM 버전에서)

What does JVM flag CMSClassUnloadingEnabled actually do?

- 편집이

이 질문도 여기에 tomcat6에 대한 질문을 받았다 : 당신이 창에 따옴표를 사용하지 않는 이유 https://serverfault.com/questions/64894/setting-catalina-opts-for-tomcat6-on-windows-doesnt-work

너무 나쁜 블로거 설명하지 않습니다.

http://javahowto.blogspot.nl/2006/06/6-common-errors-in-setting-java-heap.html

는하지만 따옴표로 하나의 큰 인자로 볼 수 있기 때문에 그것은 생각합니다. 내가 이해할 수없는 유일한 이유는 왜 jvisualvm이 당신이 올바르게 설정 한 것처럼 가장하는 것입니다. 그러나 인수의 표시는 실제로 JVM에서 설정되는 방식을 보지 않지만 인자를 형식화합니다.

+0

시도해보고 startup.bat를 실행하면 tomcat 서버 창이 즉시 닫힙니다. 서버가 너무 빨리 닫히기 때문에 서버에서 발생하는 오류는 읽을 수 없습니다. 그리고 네, 명령 프롬프트에서 서버를 시작합니다. 하지만 MaxPermGen 속성은 JVisualVM에 ""가 표시되어 있으므로 CATALINA_OPTS가 괜찮은 것 같습니다. – harmjanr

+0

@harmjanr : 그것이 작동하는 방법이며, 괜찮습니다.하지만 jvisualvm에서 볼 수 있습니다. 당신은 클라이언트 버전을 사용하고 있으며 수정 된 작업은 없습니다 ... 아마도 CATALINA_OPTS를 설정 한 스크립트의 장소일까요? 확실하지는 않지만 문제는 실제로 모호합니다. 명령을 실행하기 직전에 넣었습니다 : CATALINA_OPTS = -Djava.awt.headless = true -Dfile으로 설정하십시오.인코딩 = UTF-8 -server -Xms64m -Xmx512m -XX : PermSize = 128m -XX : MaxPermSize = 512m -XX : + CMSClassUnloadingEnabled -XX : + CMSPermGenSweepingEnabled rem ----- 요청한 명령 실행 ----- ----------------- – DelGurth

+1

나는 오류를 볼 수있었습니다. 그리고 이것은 오류입니다 : "jre/bin/jvm.dll에 server jvm 오류가 없습니다". 그래서 java JDK의 서버 디렉토리를 java JRE 디렉토리에 복사했습니다. 이제 서버는 CATALINA_OPTS 주위에 따옴표없이 시작했으며 512m의 permgen을 가지고 있습니다. 감사! – harmjanr