2014-12-22 2 views
1

을주고는 내가 톰캣의 webapps 폴더에 WAR 파일을 배치 한 톰캣 7.0.57Grails의 : 톰캣 WAR 파일 배포 메모리 예외

에 배포 오전 Grails를 2.3.6 버전의 응용 프로그램이 있습니다. 그리고 서버를 시작할 때 콘솔 창에서 예외가 발생합니다. 배포가 정상적으로 진행되는 것처럼 보이고 잠시 후 예외가 발생합니다.

스택 트레이스 아래를 참조하시기 바랍니다 : 난 Windows 작업 관리자에 갈 때, jave.exe 거의 70 취하고있다 - CPU의 80 %를.

INFO: Deploying web application archive C:\Tomcat7\apache-tomcat-7.0.57\webapps\ 
MY-1.0.2.war 
Dec 22, 2014 3:58:17 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined 
Dec 22, 2014 3:58:17 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined 
Dec 22, 2014 3:58:18 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined 
Dec 22, 2014 3:58:18 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defi 
ned 
log4j:WARN No appenders could be found for logger (org.codehaus.groovy.grails.co 
mmons.cfg.ConfigurationHelper). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more in 
fo. 

Configuring Spring Security Core ... 
... finished configuring Spring Security Core 


Dec 22, 2014 3:58:55 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory C:\Tomcat7\apache-tomcat-7.0.57\webapp 
s\docs 
Dec 22, 2014 3:58:55 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deployment of web application directory C:\Tomcat7\apache-tomcat-7.0.57\we 
bapps\docs has finished in 30 ms 
Dec 22, 2014 3:58:55 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory C:\Tomcat7\apache-tomcat-7.0.57\webapp 
s\examples 
Dec 22, 2014 3:58:56 PM org.apache.tomcat.util.digester.Digester startElement 
SEVERE: Begin event threw error 
java.lang.OutOfMemoryError: PermGen space 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 
2) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
     at org.apache.catalina.deploy.SecurityConstraint.<init>(SecurityConstrai 
nt.java:94) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct 
orAccessorImpl.java:57) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC 
onstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
     at java.lang.Class.newInstance(Class.java:379) 
     at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRu 
le.java:145) 
     at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1 
288) 
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startEle 
ment(AbstractSAXParser.java:509) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp 
l.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp 
l$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(X 
MLDocumentScannerImpl.java:606) 
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp 
l.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X 
ML11Configuration.java:848) 
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X 
ML11Configuration.java:777) 
     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser. 
java:141) 
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab 
stractSAXParser.java:1213) 
     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p 
arse(SAXParserImpl.java:648) 
     at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561) 
     at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.j 
ava:1825) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.jav 
a:1263) 

Dec 22, 2014 3:58:57 PM org.apache.catalina.startup.HostConfig deployDirectories 

SEVERE: Error waiting for multi-thread deployment of directories to complete 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen spa 
ce 
     at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j 
ava:1148) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490 
) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1611) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java 
:330) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa 
se.java:90) 
     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase 
.java:402) 
     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:34 
7) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1140) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java 
:816) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1575) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1565) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.OutOfMemoryError: PermGen space 
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab 
stractSAXParser.java:1213) 
     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p 
arse(SAXParserImpl.java:648) 
     at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561) 
     at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.j 
ava:1825) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.jav 
a:1263) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfi 
g.java:889) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi 
g.java:386) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa 
se.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContex 
t.java:5380) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase 
.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:87 
7) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) 

     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav 
a:1245) 
     at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig 
.java:1895) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:47 
1) 
     ... 4 more 

Dec 22, 2014 3:58:57 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory C:\Tomcat7\apache-tomcat-7.0.57\webapp 
s\host-manager 
Dec 22, 2014 3:59:19 PM org.apache.catalina.startup.HostConfig deployDirectories 

SEVERE: Error waiting for multi-thread deployment of directories to complete 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen spa 
ce 
     at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j 
ava:1148) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490 
) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1611) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java 
:330) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa 
se.java:90) 
     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase 
.java:402) 
     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:34 
7) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1140) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java 
:816) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1575) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1565) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.OutOfMemoryError: PermGen space 

Dec 22, 2014 3:59:19 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory C:\Tomcat7\apache-tomcat-7.0.57\webapp 
s\manager 
Dec 22, 2014 3:59:20 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory C:\Tomcat7\apache-tomcat-7.0.57\webapp 
s\ROOT 
Dec 22, 2014 3:59:20 PM org.apache.catalina.startup.HostConfig deployDirectories 

SEVERE: Error waiting for multi-thread deployment of directories to complete 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen spa 
ce 
     at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j 
ava:1148) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490 
) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1611) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java 
:330) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa 
se.java:90) 
     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase 
.java:402) 
     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:34 
7) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1140) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java 
:816) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1575) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1565) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.OutOfMemoryError: PermGen space 

Exception in thread "quartzScheduler_QuartzSchedulerThread" Dec 22, 2014 3:59:21 
PM org.apache.catalina.startup.HostConfig deployDirectories 
SEVERE: Error waiting for multi-thread deployment of directories to complete 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen spa 
ce 
     at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.j 
ava:1148) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490 
) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1611) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java 
:330) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl 
eSupport.java:117) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa 
se.java:90) 
     at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase 
.java:402) 
     at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:34 
7) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.ja 
va:1140) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java 
:816) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1575) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase. 
java:1565) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.OutOfMemoryError: PermGen space 


Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i 
n thread "quartzScheduler_QuartzSchedulerThread" 
Exception in thread "main" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i 
n thread "main" 

답변

2

Grails는 예상보다 많은 메모리를 사용하며, 런타임시 생성되는 동적 코드 때문에 더 많은 permgen을 사용합니다. permgen을 그다지 늘릴 필요가 없습니다. 처음에는 256MB로 설정하십시오.

permgen 및 기타 유사한 설정에 대한 JVM 인자들을 넣을 수있는 가장 좋은 장소는 Tomcat의 bin 디렉토리 (Windows의 .bat 또는) setenv.sh입니다. 기본적으로 생성되지는 않으며 실행 가능할 필요는 없지만 쉘 스크립트와 동일한 형식을 사용합니다. 모든 수출 변수이 충분히 총 힙 및 permgen보다 더해야 catalina.sh

에 사용됩니다은 "setenv.bat"파일에서

export CATALINA_OPTS="-Xms256m -Xmx768m -XX:MaxPermSize=256m" 
+1

추가 - 설정 JAVA_OPTS = -Dfile.encoding = UTF -8 -Xms128m -Xmx1024m -XX : PermSize = 64m -XX : MaxPermSize = 256m 그리고 작동했습니다! – donguy76