11.10 32비트를 사용하는 Java 앱에 대해 3GB 이상의 RAM을 예약할 수 없는 이유는 무엇입니까?

11.10 32비트를 사용하는 Java 앱에 대해 3GB 이상의 RAM을 예약할 수 없는 이유는 무엇입니까?

내 시스템이 8Gb를 보고하지만 6.5Gb 힙 공간을 예약하거나 Java 프로그램용으로 4Gb를 예약하려고 하면 실패합니다. 32비트 버전을 설치했기 때문인가요?

힙 할당 실패 java -Xmx3072m -jar {...}

정상적으로 시작되지만 앱에 메모리가 부족합니다. 자바 -Xmx2048m -jar {...}

답변1

믿거나 말거나, 이것은 자주 묻는 질문입니다. 그래서 당신의 대답은여기:

"32비트 JVM에 대한 이론적 최대 힙 제한은 4G입니다. 사용 가능한 스왑, 커널 주소 공간 사용량, 메모리 조각화 및 VM 오버헤드와 같은 다양한 추가 제약으로 인해 실제로 제한은 훨씬 낮을 수 있습니다. 대부분의 최신 32에서는 -bit Windows 시스템의 최대 힙 크기는 1.4G에서 1.6G까지입니다. 32비트 Solaris 커널에서는 주소 공간이 2G로 제한됩니다. 32비트 VM을 실행하는 64비트 운영 체제에서는 최대 힙 크기가 다음과 같습니다. 더 높으며 많은 Solaris 시스템에서 4G에 접근합니다.

Java SE 6부터 Windows /3GB boot.ini 기능은 지원되지 않습니다.

애플리케이션에 매우 큰 힙이 필요한 경우 64비트 애플리케이션을 지원하는 운영 체제 버전에서 64비트 VM을 사용해야 합니다. 자세한 내용은 Java SE 지원 시스템 구성을 참조하세요. "

관련 정보