Java.lang.OutOfMemoryError: пространство кучи Java в Maven
Когда я запускаю тест maven, происходит java.lang.OutOfMemoryError. Я google это для решений и попытался export MAVEN_OPTS=-Xmx1024m
, но это не сработало.
Кто-нибудь знает другие решения для этой проблемы, BTW Я использую maven 3.0
Заранее спасибо
Вставьте сообщение об ошибке здесь, когда запустите "mvn test -e"
Failed tests:
warning(junit.framework.TestSuite$1)
testDefaultPigJob_1(com.snda.dw.pig.impl.DefaultPigJobLocalTest)
testDefaultPigJob_2(com.snda.dw.pig.impl.DefaultPigJobLocalTest)
Tests run: 11, Failures: 3, Errors: 0, Skipped: 0
10/11/01 13:37:18 INFO executionengine.HExecutionEngine: Connecting to hadoop fi
le system at: file:///
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.063s
[INFO] Finished at: Mon Nov 01 13:37:18 PDT 2010
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.
5:test (default-test) on project dw.pig: There are test failures.
[ERROR]
[ERROR] Please refer to E:\Code\Java\workspace\dw.pig\target\surefire-reports fo
r the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-surefire-plugin:2.5:test (default-test) on project
dw.pig: There are test failures.
Please refer to E:\Code\Java\workspace\dw.pig\target\surefire-reports for the in
dividual test results.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:199)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:140)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
ild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:314)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:151)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:445)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:168)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures
.
Please refer to E:\Code\Java\workspace\dw.pig\target\surefire-reports for the in
dividual test results.
at org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugi
n.java:629)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:107)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:195)
... 19 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
Ответы
Ответ 1
Когда я запускаю тест maven, происходит java.lang.OutOfMemoryError. Я google это для решений и пытался экспортировать MAVEN_OPTS = -Xmx1024m, но это не сработало.
Настройка параметров Xmx
с помощью MAVEN_OPTS
работает, он настраивает JVM, используемый для запуска Maven. При этом maven-surefire-plugin по умолчанию создает новую JVM, а ваш MAVEN_OPTS
, таким образом, не передается.
Чтобы настроить размер JVM, используемого плагином maven-surefire, вам нужно либо:
- измените
forkMode
на never
(что не так хорошо, потому что Maven не будет изолирован от теста ) ~ или ~
- используйте параметр
argLine
(правильный путь):
В последнем случае что-то вроде этого:
<configuration>
<argLine>-Xmx1024m</argLine>
</configuration>
Но Я должен сказать, что я, как правило, согласен с Стивеном здесь, очень вероятно что-то не так с одним из ваших тестов, и я не уверен, что предоставление большего объема памяти - правильное решение "решить" (скрыть?) вашу проблему.
Ссылки
Ответ 2
Для тех, кто новичок в Maven (как и я), вот вся конфигурация, которая содержится в разделе сборки вашего pom. Приветствия.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<argLine>-Xmx1024m</argLine>
</configuration>
</plugin>
</plugins>
</build>
Ответ 3
Вероятно, проблема заключается в одном из модульных тестов, которые вы попросили запустить Maven.
Таким образом, возиться с размером кучи - неправильный подход. Вместо этого вы должны смотреть на unit test, который вызвал OOME, и попытаться выяснить, является ли это ошибкой unit test или тестируемого кода.
Начните с просмотра трассировки стека. Если его нет, запустите mvn ... test
снова с помощью параметра -e
.
Ответ 4
Я решил эту проблему на моей стороне двумя способами:
-
Добавление этой конфигурации в pom.xml
<configuration><argLine>-Xmx1024m</argLine></configuration>
-
Переключитесь на используемый JDK 1.7 вместо 1.6
Ответ 5
Чтобы временно решить эту проблему, я нашел следующее:
export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"
Ответ 6
Задайте переменную окружения:
MAVEN_OPTS = "- Xmx1024m"
Ответ 7
Не только память кучи. также увеличивайте размер perm, чтобы разрешить это исключение в maven использовать эти переменные в переменной среды.
variable name: MAVEN_OPTS
variable value: -Xmx512m -XX:MaxPermSize=256m
Пример:
export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m"