from_0 2009-11-06 15:12
浏览 338
已采纳

Tomcat配置Host出现内存溢出问题

哎 本来我不是做运维的 可是没办法啊

目前情况是在域名服务器那边绑定了域名和ip,但是绑定的是两个域名对应一个ip

ip这边是一台服务器,80端口是Tomcat,这就是说那边域名就会自动指向这边的Tomcat的ROOT项目

现在想让这两个域名分别指向同一个Tomcat下的不同项目,Google一下好像是“配置虚拟主机”的问题,我按着配了下,在conf/server.xml中增加如下代码:

[code="java"]

xmlValidation="false" xmlNamespaceAware="false">

[/code]

当然,如果在本地做实验的话需要在C:\WINDOWS\system32\drivers\etc下面的hosts文件中增加

127.0.0.1 www.dog123.com

我如此配置以后,运行服务器,访问http://www.dog123.com:8080/(Tomcat端口是8080,因为是在本地做实验,还没有上传服务器),报出内存溢出异常:

[code="java"]

严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:481)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:430)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:413)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
Exception in thread "http-8080-1" java.lang.OutOfMemoryError: PermGen space

[/code]

这是怎么回事啊?有懂这个的帮忙看下,谢谢大家了

  • 写回答

1条回答 默认 最新

  • Ryankay 2009-11-06 15:57
    关注

    楼主,你这个问题我前面刚遇到过,在新增HOST后往往会加大TOMCAT内存占用量,所以默认的内存已经不够了。
    解决方法:
    [quote]
    以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
    [/quote]
    如果希望详细了解这个问题出现的原因,可以访问本文:
    http://energykey.iteye.com/blog/505588

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!