apache-tomcat 서버에서 호스팅되는 애플리케이션 UI가 있습니다. bin/setenv.sh 파일의 환경 변수를 다음과 같이 설정했습니다.
CATALINA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=1024m
큰 작업(예: 애플리케이션의 모든 데이터를 사용하여 보고서 생성)을 수행할 때마다'Java 힙 공간'예외가 발생하면 후속 애플리케이션이 제대로 작동하지 않습니다. 서버를 다시 시작해야 합니다.
내 질문은 다음과 같습니다
-Xms와 -Xmx란 무엇입니까?
JavaHeapSpace 예외를 방지하려면 어떤 값을 설정해야 합니까?
최대값과 최소값은 무엇입니까?
서버 구성에 따라 달라지는 경우 아래에 서버 구성을 공유했습니다. 제안해 주세요. 나는 정말로 이 문제를 피하고 싶다.
내 서버 구성: RAM: 8GB, 프로세서: Octa Core, 하드 드라이브: 500GB
이에 대한 정보가 필요하면 알려주십시오.
답변1
-Xms와 -Xmx란 무엇입니까?
Xms256m ---> 애플리케이션에 대해 더 낮은 초기 JVM 힙 크기를 선택합니다. 그래서,XMS서버를 시작하는 데 사용될 메모리 양(MB)을 지정합니다.
Xmx512m ---> 애플리케이션에서 허용하는 최대 JVM 힙 크기를 선택합니다. 그래서,Xmx서버 실행 전용으로 사용되는 최대 메모리 양(MB)을 지정합니다.
JavaHeapSpace 예외를 방지하려면 어떤 값을 설정해야 합니까?
이는 시스템 구성이 아니라 실행하려는 응용 프로그램 유형에 따라 다릅니다. 따라서 이 모든 것은 귀하의 불필요한 세부 정보입니다. JVM이 32비트인지 64비트인지 주의해야 합니다. 마찬가지로, 로컬 최소 기본 애플리케이션을 실행하기 위한 JVM 구성이 있습니다 ---> -J-Xms100m -J-Xmx200m -J-XX:PermSize=100m
.
최대값과 최소값은 무엇입니까?
이는 시스템 및 JVM의 특성에 따라 제한됩니다.
32비트 JVM의 이론적 최대 힙 제한은 4G입니다. 사용 가능한 스왑, 커널 주소 공간 사용량, 메모리 조각화, 가상 머신 오버헤드 등 다양한 추가 제약 조건으로 인해 이 제한은 실제로 훨씬 낮을 수 있습니다. 대부분의 최신 32비트 Windows 시스템에서 최대 힙 크기의 범위는 1.4G에서 1.6G입니다. 32비트 Solaris 커널에서는 주소 공간이 2G로 제한됩니다. 32비트 VM을 실행하는 64비트 운영 체제에서는 최대 힙 크기가 더 높아 많은 Solaris 시스템에서 4G에 근접할 수 있습니다.
애플리케이션에 매우 큰 힙이 필요한 경우 64비트 애플리케이션을 지원하는 운영 체제 버전에서 64비트 VM을 사용해야 합니다.
확인하다이 링크더 알아보기