Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 詹金斯的PermGen错误_Java_Tomcat_Ubuntu_Jenkins - Fatal编程技术网

Java 詹金斯的PermGen错误

Java 詹金斯的PermGen错误,java,tomcat,ubuntu,jenkins,Java,Tomcat,Ubuntu,Jenkins,我曾经遇到过詹金斯失败的案例,但詹金斯的重新部署(詹金斯是Tomcat中的一个Web应用程序)帮了我的忙。即使新作业也因PermGen空间错误而失败,但所有设置都很好(所有这些-XX:PermSize参数都是可能的)。关键是在重新部署之后,一切都像一个魔咒一样工作。但这是一个严酷的解决方案。我想知道,是否有一些方法可以让詹金斯州立大学退学。提前谢谢 更新:好吧,对于那些可能面临类似情况的人,以下是我的想法。那些认为最好将Jenkins部署为Tomcat模块的人可能没有遇到任何类型的项目部署问题(

我曾经遇到过詹金斯失败的案例,但詹金斯的重新部署(詹金斯是Tomcat中的一个Web应用程序)帮了我的忙。即使新作业也因PermGen空间错误而失败,但所有设置都很好(所有这些
-XX:PermSize
参数都是可能的)。关键是在重新部署之后,一切都像一个魔咒一样工作。但这是一个严酷的解决方案。我想知道,是否有一些方法可以让詹金斯州立大学退学。提前谢谢


更新:好吧,对于那些可能面临类似情况的人,以下是我的想法。那些认为最好将Jenkins部署为Tomcat模块的人可能没有遇到任何类型的项目部署问题(使用Jenkins部署插件或maven的
pom.xml
中的
Tomcat maven插件)。单独安装Jenkins时,我没有遇到我描述的任何问题。唷

也许这个问题可以帮助你:


这里有一些非常好的答案。

我曾经遇到过类似的错误:jenkins正在执行maven构建,其中包括surefire测试执行。我发现我使用的maven版本(V2之类)没有将我的JVM内存选项传递给surefire进程分叉,一些测试因此失败。MAVEN_选项,JAVA_选项,都不起作用

我最终直接在settings.xml中传递了内存选项,PermGen错误就消失了

以下是我使用的选项(应用程序相当大):


-Xms512m-Xmx1024m-XX:PermSize=512m-XX:MaxPermSize=1024m

完全未经测试的建议,但建议在启动Tomcat时使用
-XX:+cmsclasssUnloadingEnabled-XX:+CMSPermGenSweepingEnabled
,但是,建议在Java 6上不需要
CMSClassUnloadingEnabled
,并且
-XX:+useConMarkSweepGC
必须用于
CMSClassUnloadingEnabled
才能有效


假设底层问题是由于Tomcat实例的PermGen空间中不必要地维护了类而导致的,那么至少
-XX:+cmsclasssUnloadingEnabled
可以做到这一点。

对于PermGen空间错误来说,真正重要的设置是(而且必须是这样):

1破折号,2大Xs、大M、大p、大S,无空格,大小以兆欧为单位,小写M。如果你搞砸了,它将被忽略。我看到的所有PermGen修复中99%的“不起作用”都是因为有人没有严格按照说明操作,用大M表示兆字节而不是小M,或者在前面放两个破折号而不是一个破折号


而且,512兆只是一个起点。。。调整以适应您的系统。

我发现将
JRE
升级到
java8
有帮助。默认情况下,Jenkins使用主文件夹下的
JRE
,由
Jenkins.xml
任务调用我通过添加到
Jenkins.conf
解决了Linux中的
PermGen
错误:

wrapper.java.additional.4=-XX:PermSize=1024M

你在ubuntu下运行吗?如果是,则需要覆盖/etc/default/tomcat设置。否则,您可以尝试使用Jrockit JVM运行tomcat,而Jrockit JVM不会出现永久空间问题。@jocelyn Yep,这是Ubuntu,我试图覆盖这些设置。Jrockit可能是一个解决方案,但由于Jenkins的原因,改变JVM还是有点奇怪。谢谢,但我试图扩大所有这些内存参数,但没有帮助。谢谢,也许我需要它,但在我的情况下,PermGen总是在一开始出现,而不是在执行测试或其他什么的时候。“一个破折号,两个大X,一个大M,一个大P,一个大S,没有空格,用梅格表示大小”让我哈哈大笑,很好!
wrapper.java.additional.4=-XX:PermSize=1024M