프로젝트를 빌드하는 동안이 메시지가 나타납니다.
java.lang.OutOfMemoryError : Java 힙 공간
힙 공간을 늘리려면 어떻게해야합니까? 8Gb 또는 RAM이있어 maven이 그렇게 많이 소비하는 것은 불가능합니다 .http : //vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the -java-heap-memory-for-maven-2-on-linux / Linux 에서 수행하는 방법,하지만 Windows 7에 있습니다. Windows에서 Java 힙 공간을 어떻게 변경할 수 있습니까?
답변
설정할 환경 변수는 MAVEN_OPTS
예를 들어 MAVEN_OPTS=-Xmx1024m
입니다. maxmem
pom 의 구성은 컴파일러 플러그인을 javac
새 JVM 으로 포크하도록 설정 한 경우에만 적용됩니다 . 그렇지 않으면 플러그인은 Maven과 동일한 VM 내에서 실행되므로 명령 줄에서 MAVEN_OPTS
.
Windows 7에서 MAVEN_OPTS를 설정하려면
- 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭 하고 속성을 선택합니다 (키보드 단축키 Windows+를 누름 Pause/Break).
- 클릭 고급 시스템 설정은 디스플레이에 시스템 속성의 왼쪽 탐색에있는 링크하는 고급 시스템 등록 정보를
- 고급 탭으로 이동 하여 고급 시스템 속성 구성 창 하단에있는 환경 변수 버튼을 클릭 합니다.
- 크리에이트 새로운 사용자 변수의 설정 변수 이름을 MAVEN_OPTS로하고, 설정 변수 값 에을
-Xmx1024m
(또는 그 이상)
새 명령 창을 열고 mvn
.
답변
확실한 (또는 비상 안전) JUnit 테스트 실행 중에 힙 공간이 부족한 경우 MAVEN_OPTS를 변경해도 도움이되지 않을 수 있습니다. 문제를 해결 한이 게시물 을 찾을 때까지 나는 운없이 MAVEN_OPTS에서 다른 구성을 계속 시도했습니다 .
기본적으로 JUnits는 자체 환경으로 분기하고 MAVEN_OPTS의 설정을 무시합니다. JUnits에 더 많은 메모리를 추가하려면 pom에서 surefire를 구성해야합니다.
바라건대 이것은 다른 누군가의 시간을 절약 할 수 있습니다!
편집 : 링크가 언젠가 끊어 질 경우를 대비하여 Keith Chapman의 블로그 에서 솔루션 복사 :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>-Xms256m -Xmx512m</argLine>
<testFailureIgnore>false</testFailureIgnore>
<skip>false</skip>
<includes>
<include>**/*IntegrationTestSuite.java</include>
</includes>
</configuration>
</plugin>
업데이트 ( 2017 년 5 월 31 일 ) : 이 점을 지적 해 주신 @johnstosh 에게 감사드립니다 .이 답변을 발표 한 이후 로 확실하게 진화했습니다. 다음은 해당 문서에 대한 링크 와 업데이트 된 코드 샘플입니다 (인수 줄은 여전히이 질문에서 중요한 부분입니다).
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
<workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
</configuration>
</plugin>
답변
EXPORT 대신 SET을 제외하고 동일한 명령이어야합니다.
- set MAVEN_OPTS = -Xmx512m은 512Mb의 힙을 제공합니다.
- set MAVEN_OPTS = -Xmx2048m은 2Gb의 힙을 제공합니다.
답변
Mac : JAVA_OPTS
및 대신 MAVEN_OPTS
_JAVA_OPTIONS를 사용하십시오. 작동합니다!
답변
운없이 MAVEN_OPTS 변수를 사용하려고 시도한 후 저에게 도움 이 되는 이 사이트 를 발견했습니다. 그래서 내가해야 할 일은 기본 VM 옵션에 -Xms128m -Xmx1024m을 추가하는 것이 었습니다.
Eclipse에서 변경하려면 창-> 환경 설정-> Java-> 설치된 JRE로 이동하십시오. 선택한 JRE / JDK를 선택하고 편집을 클릭하십시오.
답변
Windows에서 :
환경 변수를 추가합니다 (시스템 변수와 사용자 변수 모두에서 이상한 문제가 있습니다. 여러 곳에서 변수를 가져 오므로 둘 다에 추가합니다).
이름을 MAVEN_OPTS로 지정합니다.
값은 다음과 같습니다. -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled
숫자는 다를 수 있으므로 mem 크기에 상대적으로 만드십시오.
나는 그 문제가 있었고 이것은 그것을 고쳤습니다.
답변
작동했습니다-Eclipse에서 변경하려면 창-> 환경 설정-> Java-> 설치된 JRE로 이동하십시오. 선택한 JRE / JDK를 선택하고 편집을 클릭하십시오.
기본 VM 인수 = -Xms128m -Xmx1024m