有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Jenkins中的java PermGen错误

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

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


共 (3) 个答案

  1. # 1 楼答案

    完全未经测试的建议,但this answer建议在启动Tomcat时使用-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled(尽管是针对完全不同上下文中的问题)^然而,{a2}表明CMSPermGenSweepingEnabled在Java6上是不必要的,必须使用-XX:+UseConcMarkSweepGC才能使CMSClassUnloadingEnabled有效

    假设底层问题是由Tomcat实例的PermGen空间中不必要地维护类引起的,那么至少-XX:+CMSClassUnloadingEnabled可以做到这一点

  2. # 2 楼答案

    对于PermGen空间错误来说,一个真正重要的设置是(必须是这个确切地):

    -XX:MaxPermSize=512m
    

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

    此外,512兆只是一个起点。。。调整以适应你的系统

  3. # 3 楼答案

    我通过向jenkins.conf添加以下内容,解决了Linux中的PermGen错误:

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