Maven 构建中的“ java.lang. OutOfMemory yError: PermGen space”

我在构建 MAVEN 项目时得到了这个错误,我增加了 MAVEN _ OPTS,但是同样的,我发现了一些类似的帖子,但是它们指的是别的东西。我该怎么补救?

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 的生态系统中

214085 次浏览

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

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

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

(或在视窗上:)

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

您还可以指定这些 JVM 选项 分别在每个 Maven 项目中

如果你想让 POM 的这一部分成为可重复构建的一部分,你可以使用一些插件(特别是 编译器: 编译测试)的 fork 变体:

<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>

当您尝试使用 git mvn clean install for 构建 war 时,我找到了 git bash 命令的解决方案 在 Maven 构建错误中输入“ java.lang. OutOfMemory yError: PermGen space”

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

当我遇到这个异常时,我通过使用运行配置... 面板解决了这个问题,如下图所示。特别是在 JRE 选项卡上,VM 参数是关键的 < br/> (“-Xmx1024m-Xms512m-XX: MaxPermSize = 1024m-XX: PermSize = 512m”)。

enter image description here

当永久生成堆已满并且我们中的一些人使用命令提示符在窗口中构建 maven 项目时,我们面临这个错误。因为我们需要增加堆大小,所以我们可以设置我们的环境变量@ControlPanel/System 和 Security/System,然后在那里单击 更改设置,选择 Advanced 并设置环境变量如下所示

  • 变量名: MAVEN _ OPTS
  • 变量值:-XX: MaxPermSize = 128m

这个非常恼人的错误,所以我所做的是: 视窗下:

Edit system environment variables - > Edit Variables -> New

然后填满

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

enter image description here

然后重新启动控制台并再次运行 Maven 构建。