java Maven Jetty插件OutOfMemoryError在两个Web应用程序之间共享实例时出错
我正在使用maven jetty插件来运行我的两个web应用程序。一个web应用程序是spring mvc UI,另一个是RESTful web应用程序。当我运行两个独立的mvn jetty时,我能够让这两个web应用程序通信:运行实例并分配不同的端口。我已经使用下面的maven pom在同一个jetty实例中使用同一个端口成功地部署了这两个组件。xml配置。我最终得到了ava。lang.OutOfMemoryError:PermGen空间错误。最好的解决方法是什么
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.6.8.v20121106</version>
<configuration>
<jvmArgs>-Xmx2024m -Xms2024m</jvmArgs>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/</contextPath>
</webApp>
<contextHandlers>
<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
<war>../../api/target/main-api.war</war>
<contextPath>/test</contextPath>
</contextHandler>
</contextHandlers>
</configuration>
</plugin>
# 1 楼答案
这取决于哪个JVM实例需要更多内存。例如,如果测试是分叉的(默认情况下),并且由于OutOfMemoryError而失败,那么请尝试配置启动它们的插件:
或者
除了堆内存。您还必须增加perm size来解决maven中的异常,在环境变量中使用这些变量。有时也可以扩展perm内存大小-
设置环境变量:
来自resource的编译数据
# 2 楼答案
最终需要多长时间?是否有一款网络应用经常因变化而重新部署
在重新部署web应用程序时,很容易泄漏类。我会在maven_选项中添加这个设置来运行maven
-XX:+HeapDumpOnOutOfMemoryError
运行直到出现内存不足错误,然后用eclipse mat加载转储文件,看看是什么填充了你的perm gen。你的web应用程序很可能是leaking classes on redeploy
# 3 楼答案
请澄清:您使用的是什么jvm版本,您使用的是什么操作系统,您的计算机上安装了多少物理内存。如果将内存需求降低到1400M(如果在32位jvm上运行,可能会有所帮助),例如:
# 4 楼答案
尝试在分叉模式下运行Jetty,如下所示:
有关更多详细信息,请查看Running Jetty in a forked JVM
而且。。。在开始此操作之前,请确保您确实有2048 MB的可用RAM