“VM 초기화 중에 오류가 발생했습니다. -Xmx3G를 사용하여 개체 힙을위한 충분한 공간을 예약 할 수 없습니다.


93

우선, 8GB의 램이 들어있는 상자가 있으므로 총 메모리가 문제가 아닌 것 같습니다. 이 응용 프로그램은 6GB 이하의 컴퓨터에서 잘 실행됩니다.

Eclipse에서 구성 실행의 "VM 인수"에서 -Xmx3G를 사용하여 3GB의 공간을 예약하려고합니다.

1500mb 이상을 예약하려고 할 때마다 다음 오류가 발생합니다.“VM 초기화 중에 오류가 발생했습니다. -Xmx3G를 사용하여 개체 힙을위한 충분한 공간을 예약 할 수 없습니다.

여기서 무슨 일이 일어나고 있습니까?


2
어떤 버전의 Java가 있습니까? 어떤 운영 체제에서 실행 중입니까?
Adam Rofer 2012

이것은 Win7이었고 3 개의 다른 Java 버전이 설치되어있었습니다. 그중 하나는 Eclipse에서 사용하던 32 비트 JRE입니다.
user1212731

3
답을 정답으로 표시하는 것을 잊지 마십시오.
xdhmoore 2013 년

당신의 sutaible 공간으로 gridle.property의 설정을 변경하십시오
Bhushan

답변:


64

해당 컴퓨터에서 32 비트 jvm을 사용하고있을 수 있습니까?


8
어리석은 질문에 대해 미안하지만 어떻게 확인합니까? 64 비트를 어떻게 사용할 수 있습니까?
user1212731

3
실제로 명령 줄에서 java -d64 -version을 시도했는데 64 비트 서버 VM이 나왔습니다.
user1212731

6
64 비트가 최신 설치 였음에도 불구하고 Eclipse는 이전에 설치 한 JRE의 32 비트 버전을 사용하고있었습니다. 이 문제를 해결하기 위해 환경 설정-> 설치된 JRE에서 설정을 변경했습니다. 대답 해 주셔서 감사합니다!
user1212731

3
어쨌든 32 비트는 4GB를 처리하기에 충분하지 않습니까?
Thomas

7
그래야하지만 이것은 내 문제를 해결합니다. 설명이 없기 때문에이 답변에 대해 찬성 투표를하지 않습니다. 이 링크는 32 비트 jvm이 1GB의 최대 힙 공간을 초과 할 수없는 방법을 설명합니다
Steven

58

여기를 해결하는 방법은 다음과 같습니다 로 이동 Start->Control Panel->System->Advanced(tab)->Environment Variables->System

Variables->New:
Variable name: _JAVA_OPTIONS   
Variable value: -Xmx512M

Variable name: Path  
Variable value: ;C:\Program Files\Java\jre6\bin;F:\JDK\bin;  

이를 적절한 경로로 변경하십시오 .


4
다른 사람을위한 메모입니다. USER 변수가 아닌 SYSTEM 변수를 추가합니다. 이클립스에서이 문제가 발생했고 위의 변경 사항을 적용한 후 컴퓨터를 재부팅 할 필요가 없었습니다. 이클립스를 다시 시작하기 만하면되었습니다. 감사!
captain_jim1

호기심 많은 사람들을 위해 _JAVA_OPTIONS의 -Xmx 플래그는 최대 허용 JVM 힙 크기를 지정합니다. 이것은 JVM이 비합리적인 공간을 요청하는 것을 방지합니다 (특히 32 비트 시스템에 대해 연속적으로 할당 할 수 없음 ...)
varun

41

이것은 실제로 Eclipse 고유의 문제가 아닙니다. 일반적인 Java-on-Windows 문제입니다. JVM이 Windows에서 메모리를 할당하는 방식 때문입니다. 그것은 할당 요청을 충족시키기에 충분한 별도의 청크가 있더라도 종종 Windows가 제공 할 수없는 연속적인 메모리 청크를 할당해야한다고 주장합니다. Windows가 메모리를 "조각 모음"하는 데 도움이되는 유틸리티가 있으며, 이론적으로는 이러한 상황에 도움이됩니다. 그러나 나는 그들을 본격적으로 시도하지 않았으므로 그 효과에 대해 말할 수 없습니다. 때때로 도움이 될 수 있다고 들었던 한 가지는 Windows를 재부팅하고 다른 앱을 시작하기 전에 큰 메모리가 필요한 Java 앱을 시작하는 것입니다. 운이 좋다면 Windows는 아직 메모리 공간을 조각화하지 않았으며 Java는 요청하는 연속 블록을 얻습니다.

인터 웹 어딘가에이 문제에 대한 더 많은 기술적 설명과 분석이 있지만 유용한 참고 자료가 없습니다.

그래도 도움이되는 것을 찾았습니다. https://stackoverflow.com/a/497757/639520


2
제 경우에는 귀하의 답변이 작동하는 것 같습니다. 창을 다시 시작하지 않았지만 창에서 다른 앱을 닫은 다음 Java를 실행하고 VM을 시작할 수있었습니다.
sttaq

22

먼저 32 비트의 JRE는 ~ 1.5Gb의 램을 더 많이 사용할 수 없습니다. 따라서 더 많은 것을 원하면 64 비트 JRE를 사용하십시오.

둘째, 새 JVM이 시작될 때 실행중인 모든 JVM의 -Xmx 속성을 합산하고 시스템에 자체 -Xmx에서 실행할 메모리가 충분한 지 확인합니다. 충분하지 않으면 오류가 발생합니다.


15

Eclipse IDE에서 Tomcat 서버와 함께 Liferay를 사용하고있었습니다. 서버 시작을 클릭 할 때 이와 동일한 오류가 발생했습니다. eclipse에서 서버를 두 번 클릭하십시오. 서버 개요 페이지가 열립니다. -Xmx1024m -XX : MaxPermSize = 256m에서 -Xmx512m -XX : MaxPermSize = 256m으로 메모리 인수가 업데이트되었습니다. 그런 다음 그것은 나를 위해 일했습니다.



9

Eclipse가 실제로 실행 중이라고 생각하는 것과 동일한 JVM을 실행하고 있는지 확인하십시오. 웹 브라우저에서 Java를 사용하는 경우, 최근에 설치되거나 업데이트 된 경우 우선 순위가 될 수있는 32 비트 버전도있을 수 있습니다.

확실하게하기 위해 eclipse.ini파일 상단에 다음 두 줄을 추가하는 것이 좋습니다 .

-vm 
C:/Java/jdk1.6.0_27/bin

... 내 컴퓨터 C:/Java/jdk1.6.0_27/bin에서 내가 아는 JVM이 64 비트 인 곳. bin거기 에 폴더가 있는지 확인하십시오 .

(보너스로, Windows 7에서는 실제로 "탭을 고정"할 수 있습니다. 이것이 제가 직접 사용하기 위해이 작업을 수행해야하는 이유입니다.)


-vm 인수는 폴더가 아닌 Java 실행 파일을 가리켜 야합니다. 참조 wiki.eclipse.org/%C2%A0eclipse.ini#Specifying_the_JVM
E-RIZ

1
잘못된. 이 이클립스 버그를 참조하십시오 bugs.eclipse.org/bugs/show_bug.cgi?id=314805
아담 Rofer

이것은 실제로 문제였습니다! Eclipse는 내가 어느 시점에 설치했던 32 비트 버전의 JRE를 사용하고있었습니다. 답 해주셔서 감사하고 올바른 방향으로 이끌어 주셔서 감사합니다! 대단히 감사합니다.
user1212731

@AdamRofer, 그 버그는 흥미롭지 만 특히 Windows 7과 Eclipse를 작업 표시 줄에 고정하는 문제를 해결하기위한 것입니다. 일반적으로 eclipse.ini는 Java 실행 파일을 가리켜 야하지만 Equinox 런처는 -vm이 폴더를 가리킬 경우 Java 실행 파일을 찾게된다는 점에서 지능적인 것처럼 보입니다 (최소한 Windows에서는).
E-Riz

@ E-Riz "should"는 내 취향에 비해 너무 엄격합니다. :) 언젠가 vm 인수를 변경하지 않고도 버그를 해결하기를 바랍니다. 다음은 eclipse.ini페이지 에서 업데이트하기에 좋은 정보입니다 . wiki.eclipse.org/…
Adam Rofer

5

이것이 힙 크기 문제입니다. .bat(배치 파일)을 편집합니다 . 힙 크기 1024를 표시 할 수 있습니다. 512로 변경하면 작동합니다.


2

32 비트 Eclipse와 64 비트 JVM을 사용하는 동안에도 동일한 문제가 발생했습니다. Eclipse를 32 비트 JVM으로 라우팅했을 때 작동했습니다.


2

gradle.properties #앞에 기호를 넣으 org.gradle.jvmargs=-Xmx1536m십시오.

 # org.gradle.jvmargs=-Xmx1536m

Mac OS에서 Kotlin-multiplatform을 시도하는 동안 어떻게 작동했는지 확실하지 않습니다! 어쨌든 감사합니다!
Chintan Soni

1

내가 조금 늦었다는 것을 알고 있지만 여기에 내 대답이 있습니다.

방금 Oracle에서 Java 온라인 버전을 설치했습니다 (오프라인 64 비트가 아님).

JAVA_HOME ENV 변수를 추가 한 후 방금 작동했습니다!

내가 도울 수 있기를 바랍니다 :)


0

어쨌든 잘못된 옵션을 시도하고있을 것입니다. 오류 로그 지원과 유사한 오류가 발생했습니다.

Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0

제 경우에는 소프트웨어가 아직 Java 8을 지원하지 않았지만 (스크립트는 이전 JVM 인수를 사용하고 있었음) 기본적으로 Java 8을 사용했습니다.


0

이 문제의 원인 중 하나는 Tomcat을 시작할 수있는 메모리가 없기 때문입니다. Windows에서 원하지 않는 실행중인 소프트웨어를 삭제하고 eclipse와 tomcat을 다시 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.