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

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

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

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

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



답변

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


답변

여기를 해결하는 방법은 다음과 같습니다
로 이동 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;

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


답변

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

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

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


답변

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

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


답변

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


답변

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에서는 실제로 “탭을 고정”할 수 있습니다. 이것이 제가 직접 사용하기 위해이 작업을 수행해야하는 이유입니다.)


답변

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