Maven构build中的“java.lang.OutOfMemoryError:PermGen空间”

可能重复:
如何处理“java.lang.OutOfMemoryError:PermGen space”错误

我在构buildMaven项目时遇到这个错误,我增加了MAVEN_OPTS,但都是一样的,我发现了一些类似的post,但他们引用了其他的东西。 我该如何解决?

The system is out of resources. Consult the following stack trace for details. java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at org.codehaus.plexus.compiler.javac.IsolatedClassLoader.loadClass(IsolatedClassLoader.java:56) at com.sun.tools.javac.comp.Annotate.<init>(Annotate.java:52) at com.sun.tools.javac.comp.Annotate.instance(Annotate.java:36) at com.sun.tools.javac.jvm.ClassReader.<init>(ClassReader.java:215) at com.sun.tools.javac.jvm.ClassReader.instance(ClassReader.java:168) at com.sun.tools.javac.main.JavaCompiler.<init>(JavaCompiler.java:293) at com.sun.tools.javac.main.JavaCompiler.instance(JavaCompiler.java:72) at com.sun.tools.javac.main.Main.compile(Main.java:340) at com.sun.tools.javac.main.Main.compile(Main.java:279) at com.sun.tools.javac.main.Main.compile(Main.java:270) at com.sun.tools.javac.Main.compile(Main.java:87) 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:597) at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:420) at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:141) at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:493) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 

当你说你增加了MAVEN_OPTS ,你增加了什么值? 你是否增加了MaxPermSize ,例如:

 export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m" 

(或在Windows上)

 set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m 

如果你想为可重复构build构buildPOM的这一部分,可以使用一些插件的fork-variant(尤其是compiler:compile和surefire:test ):

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <fork>true</fork> <meminitial>128m</meminitial> <maxmem>1024m</maxmem> <compilerArgs> <arg>-XX:MaxPermSize=256m</arg> </compilerArgs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18</version> <configuration> <forkCount>1</forkCount> <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> </configuration> </plugin> 

当然,增加你的烫发空间的大小。 使用-XX:MaxPermSize=128m选项。 将该值设置为适当的值。

当你尝试使用git mvn clean install在Maven的“java.lang.OutOfMemoryError:PermGen space”中构build错误时,我发现了一个git bash命令的解决scheme

 use below command first $ export MAVEN_OPTS="-Xmx512m -Xss32m" then use your mvn command to clean install /build war file $ mvn clean install NOTE: you don't need -XX:MaxPermSize argument in MAVEN_OPTS when your are using jdk1.8 Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=XXXm; support was removed in 8.0 

当我遇到这个exception时,我使用Run Configurations …面板来解决这个问题,如下图所示。尤其是在JRE选项卡中,VM Arguments是关键
“-Xmx1024m -Xms512m -XX:MaxPermSize = 1024m -XX:PermSize = 512m” )。

在这里输入图像说明

当永久代堆满了,我们面临这个错误,我们中的一些人使用命令提示符在windows中构build我们的maven项目。 因为我们需要增加堆的大小,所以我们可以设置我们的环境variables@ControlPanel / System和Security / System,然后点击更改设置并select高级并设置环境variables如下

  • variables名称:MAVEN_OPTS
  • variables值:-XX:MaxPermSize = 128m

这非常恼人的错误,所以我做了:在Windows下:

 Edit system environment variables - > Edit Variables -> New 

然后填写

 MAVEN_OPTS -Xms512m -Xmx2048m -XX:MaxPermSize=512m 

在这里输入图像说明

然后重新启动控制台并再次运行maven版本。 没有更多的Maven的空间/烫发大小的问题。