[java] 메모리 집약적 애플리케이션을 위해 JVM 최대 힙 크기 늘리기

2GB 이상을 사용하는 Java 메모리 집약적 애플리케이션을 실행해야하지만 힙 최대 크기를 늘리는 데 문제가 있습니다. 지금까지 다음 접근 방식을 시도했습니다.

  • -Xmx 매개 변수 설정 (예 : -Xmx3000m) 이 접근 방식은 JVM 생성시 실패합니다. 내가 검색 한 결과 -Xmx는 2GB 미만이어야합니다.

  • 은 Using + AggressiveHeap 옵션 : -XX을 . 이 방법을 시도하면 컴퓨터에 8GB의 메모리가 있어도 힙 크기가 1273.4MB라는 ‘메모리 부족’오류가 표시됩니다.

JVM의 최대 힙 크기를 늘릴 수있는 또 다른 방법이 있습니까? 다음은 컴퓨터 사양 요약입니다.

  • 운영체제 : Windows 7 (64 비트)
  • 프로세서 : Intel Core i7 (2.66GHz)
  • 메모리 : 8GB
  • 자바 버전 :
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)



답변

Oracle 에서 64 비트 JVM을 얻으십시오 .


답변

32 비트 모드에서 JVM을 사용하는 경우 할당 할 수있는 최대 힙 크기는 1280MB입니다. 따라서 그 이상을 원한다면 64 모드에서 JVM을 호출해야합니다.

다음을 사용할 수 있습니다.

$ java -d64 -Xms512m -Xmx4g HelloWorld

어디,

  • -d64 : 64 비트 JVM을 사용합니다.
  • -Xms512m : 초기 힙 크기를 512MB로 설정합니다.
  • -Xmx4g : 최대 힙 크기를 4GB로 설정합니다.

요구 사항 (YMMV)에 따라 -Xms 및 -Xmx를 조정할 수 있습니다.

JVM 성능 조정에 대한 매우 좋은 리소스입니다. http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html 을 살펴볼 수 있습니다.


답변

2GB 제한은 32 비트 Java 용이라고 생각합니다. v1.6은 항상 64 비트라고 생각했지만 64 비트 모드를 사용하여 -d64 옵션을 추가하십시오.


답변

32 비트 Java는 약 1.4 ~ 1.6GB로 제한됩니다.

Oracle 32 비트 힙 FAQ

인용문

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


답변

아래 conf는 나를 위해 작동합니다.

JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/
PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH
export PATH
export JAVA_HOME

JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server"

/JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"


답변