[java] 개체 힙을위한 충분한 공간을 예약 할 수 없습니다

프로그램을 실행할 때마다 다음과 같은 예외가 반복적으로 발생합니다.

VM 초기화 중 오류가 발생했습니다

개체 힙을위한 충분한 공간을 예약 할 수 없습니다

자바 가상 머신을 만들 수 없습니다.

가상 메모리 (페이지 크기)와 RAM 크기를 늘리려 고했지만 아무 소용이 없습니다.

이 오류를 어떻게 제거 할 수 있습니까?



답변

JVM을 -XX:MaxHeapSize=512m(또는 필요한만큼 큰 숫자로) 또는 -Xmx512m짧게 실행하십시오.


답변

이는 32 비트 HotSpot VM에서 너무 큰 것을 설정하여 발생할 수도 있습니다. 예를 들면 다음과 같습니다.

-Xms1536m -Xmx1536m

이것이 작동 할 수 있는 곳 :

-Xms1336m -Xmx1336m


답변

해결 방법은 다음과 같습니다.

  • 시작-> 제어판-> 시스템-> 고급 (탭)-> 환경 변수-> 시스템으로 이동하십시오.

    변수-> 신규 : 변수 이름 : _JAVA_OPTIONS
    변수 값 : -Xmx512M
    변수 이름 : Path
    변수 값 :%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;

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


답변

javac를 사용할 때이 문제가 발생했으며 명령 줄 옵션에서 선택하지 않는 것 같습니다.

-bash-3.2$ javac -Xmx256M HelloWorldApp.java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

여기에 해결책이 있습니다. _JAVA_OPTIONS

-bash-3.2$ export _JAVA_OPTIONS="-Xmx256M"
-bash-3.2$ javac HelloWorldApp.java
Picked up _JAVA_OPTIONS: -Xmx256M

그리고 이것은 잘 컴파일됩니다.

이것은 많은 RAM을 가지고 있지만 메모리 ulimits가 낮은 컴퓨터에서 발생합니다. Java는 머신에서 램을 감지하기 때문에 큰 힙을 할당하기로 결정하지만 ulimits 때문에 할당 할 수 없습니다.


답변

32 비트 Java를 실행하려면 메모리에 연속 여유 공간이 필요합니다. 큰 힙 크기를 지정하면 필요한 것보다 많은 사용 가능한 공간이 있어도 메모리에 너무 많은 사용 가능한 공간이 없을 수 있습니다.

이 경우 64 비트 버전의 Java를 설치하면 연속 메모리 요구 사항이 32 비트 Java에만 적용됩니다.


답변

-Xmx512M과 결합하여 -d64를 사용하여 64 비트 VM을 실행하고 있는지 확인하십시오. 64 비트 컴퓨터에서 64 비트 가상 컴퓨터를 실행하고 있다고 생각했지만 아니요. 64 비트 Java를 설치 한 후 -d64 옵션이 작동하고 -Xmx는 훨씬 더 큰 메모리 크기를 허용합니다.

java -d64 -Xmx512M mypackage.Test


답변

같은 오류가 발생하여 run.conf.bat에서 구성 하여이 문제를 해결했습니다.

Jboss5x에서 run.conf.bat 구성으로 JVM을 실행하십시오.

사용 가능한 메모리를 사용할 수 없으면 명령문을 전달할 때 run.conf.bat를 변경하십시오.

set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m"