开发者社区> 问答> 正文

tomcat 应用多个项目碰到的问题

我们的项目需要对某些war包进行热部署,开始的时候部署个1,2个进去没有什么问题,现在到系统测试了,一次扔进去10个8个的tomcat就挂掉了,查了很多资料说是要改tomcat所占内存大小,就算我把2G内存都给了他也不能解决根本问题啊,我们项目起来以后可能会有上百个这个的war包需要热部署进去,而且被部署的项目服务器不关是不能删除的,这样webapps下会有越来越多的项目,是不是当初设计的时候就不应该用tomcat?有这方面的经验的高手指点下,这问题能解决吗,还是必须要换一个服务器?
`java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)`
这个异常是我在正常启动tomcat的时候报的(部署了25个项目)
删除几个项目后启动又报:
`java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1819)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1327)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)`
有这方面的经验的高手指点下,这问题能解决吗,还是必须要换一个服务器?

展开
收起
落地花开啦 2016-05-27 11:04:04 2884 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    加内存或者升级JDK, 好像jdk7 的 permGen 可以回收了
    permgen 内存大小是可以设置的,这块内存区域一般理解为加载应用、应用服务器的jar包之类,如果应用jar包太多,多次热部署这个区域就会溢出。所以可以适当把permgen值调大一些。
    最好根据应用运行之后的实际内存要求设置下jvm 的 heap 大小。

    2019-07-17 19:17:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载