"java.lang.OutOfMemoryError: пространство PermGen" в сборке Maven

Возможный дубликат:
Как бороться с ошибкой java.lang.OutOfMemoryError: 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)

Ответ 1

Когда вы говорите, что вы увеличили MAVEN_OPTS, какие значения вы увеличили? Вы увеличили MaxPermSize, как в примере:

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

(или в Windows:)

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

Ответ 2

Если вы хотите сделать эту часть своего POM для повторяющейся сборки, вы можете использовать fork-вариант нескольких плагинов (особенно компилятор: компилировать и 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>

Ответ 3

Увеличьте размер своего пространства перм, конечно. Используйте опцию -XX:MaxPermSize=128m. Задайте значение для чего-то подходящего.

Ответ 4

Я нашел решение команды git bash, когда вы пытаетесь построить войну, используя git mvn clean install для    "java.lang.OutOfMemoryError: пространство PermGen" в ошибке сборки Maven

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

Ответ 5

Когда я столкнулся с этим исключением, я решил это, используя панель Run Configurations..., как показано на рисунке ниже. Особенно, на вкладке JRE аргументы VM являются критическими
(" - Xmx1024m -Xms512m -XX: MaxPermSize = 1024 м -XX: PermSize = 512 м ").

введите описание изображения здесь

Ответ 6

Мы сталкиваемся с этой ошибкой, когда куча постоянного поколения заполнена, а некоторые из нас используют командную строку для создания нашего проекта maven в окнах. так как нам нужно увеличить размер кучи, мы могли бы установить нашу переменную окружения @ControlPanel/System и Security/System и там вы нажмете Изменить параметр и выберите "Дополнительно" и установите переменную среды ниже

  • Имя переменной: MAVEN_OPTS
  • Значение переменной: -XX: MaxPermSize = 128m

Ответ 7

Эта очень раздражающая ошибка, так что я сделал: В Windows:

Edit system environment variables - > Edit Variables -> New

затем заполните

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

введите описание изображения здесь

Затем перезапустите консоль и снова запустите сборку maven. Нет больше проблем с пространством Maven/perm size.