[Java] JDK8 jvm 매개변수 구성 및 설명

매개변수

설명하다

1. 힙 메모리 매개변수 설정

-Xms

또는

-XX:초기힙 크기=n

힙의 초기값 설정

명령 1:-Xms2g
명령 2:-XX:InitialHeapSize=2048m

-Xmx

-XX:최대힙 크기=n

힙 영역의 최대 크기 설정
명령 1:-Xmx2g
명령 2: -XX:MaxHeapSize=2048m
-XX:새 크기=n 젊은 세대 크기 설정

-Xss

또는

-XX:스레드스택 크기=n

스레드당 최대 스택 크기

명령 1: -Xss256k
명령 2: -XX:ThreadStackSize=256k
참고:

기본 스택 크기는 1M입니다. 128K이면 충분합니다. 큰 스택의 경우 256K를 권장합니다. 스택 설정이 너무 크면 스레드 생성이 발생합니다. a> 줄입니다. 스택 설정이 작으면 깊이가 충분하지 않으며, 깊은 재귀로 인해스택 오버플로가 발생합니다.

-Xmn

또는

-XX:MaxNewSize=n

차세대 메모리 구성
명령 1: -Xmn512m
명령 2: -XX:MaxNewSize=512m
-XX:생존자비율=n

두 생존 영역과 Eden 영역의 크기 비율
명령: -XX:SurvivorRatio=8(기본값)

Young Generation의 경우 Eden 영역과 두 개의 Survivor 영역의 비율입니다. 두 개의 Survivor 영역이 있음을 참고하세요. 신세대에서는 S 영역과 Eden 영역의 비율이 1:8이고 두 개의 S 영역이 2:8입니다. .

-XX:새 비율=n

신세대와 구세대의 비율
-XX:NewRatio=2(기본값)

새로운 세대를 나타냄: Old Generation = 1:2, 즉 Old Generation이 전체 힙의 2/3를 차지, 기본값 = 2

-Xms==-Xmx 및 -Xmn이 설정된 경우 이 매개변수를 설정할 필요가 없습니다.

-Duser.timezone=GMT+08 시간대 지정
‐Dfile.encoding=UTF‐8 기본 파일 인코딩 지정

2. 가비지 컬렉터 설정

-XX:+인쇄GC

GC 로그의 간단한 인쇄
-XX:+GC 세부정보 인쇄 GC 로그를 자세히 인쇄합니다.
-XX:+PrintHeapAtGC GC 전후의 자세한 스택 정보 인쇄
-XX:+PrintGCTimeStamps GC가 발생하면 GC가 발생한 시간이 추가로 출력되는데, 이 출력 시간은 가상머신이 시작된 후의 시간 오프셋이다.
-XX:+GCDateStamp 인쇄 GC 발생시 타임존으로 날짜 출력
-XX:+PrintGCApplicationConcurrentTime 각 가비지 수집 전 애플리케이션의 중단 없는 실행 시간을 인쇄합니다.
-XX:+PrintGCApplicationStoppedTime GC로 인한 애플리케이션 일시 중지 시간 인쇄
-XX:+인쇄참조GC 시스템 내에서 소프트 참조, 약한 참조, 가상 참조 및 마무리 대기열을 추적합니다.

2.1 GC 재활용 로그 인쇄

-Xloggc:log/gc.log

gc 로그 출력의 파일 경로를 지정합니다.

JDK8은 GC ​​출력 파일을 지정하기 위해 %p 및 %t와 같은 자리 표시자의 사용을 지원하기 시작합니다. 프로세스 pid와 시작 타임스탬프를 각각 나타냅니다.

예를 들어: 

-Xloggc:/data/gclog/gc.log 고정 경로 이름 생성

-Xloggc:/data/gclog/gc-%t.log는 시간을 기준으로 생성됩니다.

-Xloggc:/data/gclog/gc-%p.log는 프로세스 pid를 기반으로 생성됩니다.

-XX:+GCLogFileRotation 사용 롤링 로그 생성
로그 파일이 일정 크기에 도달하면 다른 파일이 생성되며 -Xloggc를 구성해야 합니다.
-XX:GCLog파일 수=n -XX:NumberOfGCLogFiles=4 롤링 GC 로그 파일 수, 기본값은 0, 롤링 없음, UseGCLogFileRotation을 구성해야 함, jcmd 명령을 통해서만 트리거링을 나타내려면 0으로 설정
-XX:GCLogFileSize=n -XX:GCLogFileSize=100k GC 파일 롤링 크기, UseGCLogFileRotation을 구성해야 합니다. 0으로 설정하면 jcmd 명령에 의해서만 트리거된다는 의미입니다.

2.2 힙 메모리 오버플로 구성

-XX:+HeapDumpOnOutOfMemoryError

메모리 오버플로 시 전체 힙 정보를 내보내 JVM이 OOM 예외 발생 시 힙 정보를 출력하도록 허용하고 (-XX:+HeapDumpPath) 매개변수를 통해 힙 메모리 오버플로 스냅샷 출력의 파일 주소를 설정합니다.

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./log/dump/

-XX:힙 덤프 경로 내보내기 힙의 저장 경로 지정
-XX:OnOutOfMemoryError=""

이 매개변수를 사용하면 시스템 OOM 이후에 이메일 경보 정보 전송, 시스템 재시작 등에 사용할 수 있는 스크립트를 사용자 정의할 수 있습니다.

-XX:OnOutOfMemoryError="/opt/local/bin/alert.sh"

-XX:+FullGC 전 힙 덤프 Full GC 전 덤프 구현
-XX:HeapDumpPath=/logs/Dump가 저장되는 경로 설정
-XX:+FullGC 후 힙 덤프

Full GC 이후 덤프 구현

-XX:HeapDumpPath=/logs/Dump가 저장되는 경로 설정

2.3 가비지 컬렉터 구성

-XX:+직렬GC 사용 직렬 가비지 수집기 사용을 활성화합니다. 이는 일반적으로 가비지 수집을 위한 특별한 기능이 필요하지 않은 작고 간단한 애플리케이션에 가장 적합한 선택입니다. 기본적으로 이 옵션은 비활성화되어 있으며 수집기는 시스템 구성 및 JVM 유형에 따라 자동으로 선택됩니다.
-XX:+ParallelGC 사용

병렬 정리 가비지 수집기(처리량 수집기라고도 함)를 사용하여 여러 프로세서를 활용하여 애플리케이션 성능을 향상시킬 수 있습니다.

기본적으로 이 옵션은 비활성화되어 있으며 수집기는 컴퓨터 구성 및 JVM 유형에 따라 자동으로 선택됩니다. 활성화된 경우 이 옵션은-XX:+UseParallelOldGC명시적으로 비활성화하지 않는 한 자동으로 활성화됩니다.

-XX:+ParalledlOldGC 사용 을 사용하면 병렬 가비지 수집기를 전체 GC에 사용할 수 있습니다. 기본적으로 이 옵션은 비활성화되어 있습니다. 이 기능을 활성화하면 이-XX:+UseParallelGC옵션이 자동으로 활성화됩니다.
-XX:+ConcMarkSweepGC 사용

은 이전 세대에 대해 CMS 가비지 수집기 사용을 허용합니다. Oracle은 스팸(-XX:+UseParallelGC) 가비지 수집기가 애플리케이션 대기 시간 요구 사항을 충족할 수 없는 경우 CMS 가비지 수집기를 사용할 것을 권장합니다. G1 가비지 수집기(-XX:+UseG1GC)는 또 다른 옵션입니다.

기본적으로 이 옵션은 비활성화되어 있으며 수집기는 컴퓨터 구성 및 JVM 유형에 따라 자동으로 선택됩니다. 이 옵션이 활성화되면 이 옵션은-XX:+UseParNewGC자동으로 설정되며 JDK 8에서는 다음 옵션 조합이 더 이상 사용되지 않으므로 이 옵션을 비활성화해서는 안 됩니다.-XX:+UseConcMarkSweepGC -XX:-UseParNewGC

-XX:+ParNewGC 사용 은 젊은 세대의 수집을 위해 병렬 스레드를 사용하도록 허용합니다. 기본적으로 이 옵션은 비활성화되어 있습니다. -XX:+UseConcMarkSweepGC 옵션을 설정하면 자동으로 활성화됩니다. -XX:+UseParNewGC옵션 없이-XX:+UseConcMarkSweepGC 옵션은 JDK 8에서 더 이상 사용되지 않습니다
-XX:+G1GC 사용 가비지 우선(G1) 가비지 수집기 사용을 허용합니다. 대용량 RAM을 갖춘 다중 프로세서 시스템을 대상으로 하는 서버 스타일 가비지 수집기입니다. 우수한 처리량을 유지하면서 높은 확률로 GC 일시 중지 시간 목표를 충족합니다. G1 수집기는 대규모 힙(약 6GB 크기 이상)과 제한된 GC 대기 시간 요구 사항(0.5초 미만의 안정적이고 예측 가능한 일시 중지 시간)이 필요한 애플리케이션에 권장됩니다.
-XX:병렬GCThreads=n

GC 병렬 실행 스레드 수

-XX:병렬GCThreads=16

3. 보조 지침(실행 중인 JVM의 특정 구성 보기 또는 수정)

jinfo -flag 매개변수 pid

HeapDumpOnOutOfMemoryError 구성이 활성화되어 있는지 확인하십시오.

jinfo -flag HeapDumpOnOutOfMemoryError 10001

HeapDumpOnOutOfMemoryError 구성 수정(-off + on)

jinfo -flag +HeapDumpOnOutOfMemoryError 10001

-XX:+PrintFlags최종

jvm 매개변수 구성 보기

-XX:+PrintFlagsFinal |grep GC GC 관련 매개변수 구성 보기

-XX:+PrintCommandLineFlags

사용자 또는 현재 가상 머신에 의해 설정된 인쇄 매개변수

-XX:+PrintCommandLineFlags -version GC 힙의 초기 크기 및 GC 수집기 유형을 봅니다.

4.JDK8용 JVM 시작 매개변수의 기본 구성

  • -Xms2g -Xmx2g (按不同容器,4G及以下建议为50%,6G以上,建议设置为70%)
  • -XX:MetaspaceSize=128m
  • -XX:MaxMetaspaceSize=512m
  • -Xss256k
  • -XX:+UseG1GC
  • -XX:MaxGCPauseMillis=200
  • -XX:AutoBoxCacheMax=20000
  • -XX:+HeapDumpOnOutOfMemoryError (当JVM发生OOM时,自动生成DUMP文件)
  • -XX:HeapDumpPath=/data/logs/gc/
  • -XX:ErrorFile=/data/logs/gc/hs_err_%p.log (当JVM发生崩溃时,自动生成错误日志)
  • -XX:+PrintGCApplicationStoppedTime
  • -XX:+PrintGCDetails
  • -XX:+PrintGCDateStamps
  • -Xloggc:/data/logs/gc/gc-ePrint-service.log

4. 매개변수 옵션을 비활성화하고 폐기합니다.

-Xincgc

증분 가비지 수집을 활성화합니다. 이 옵션은 JDK 8에서 더 이상 사용되지 않으며 교체할 필요가 없습니다.

-Xrun libname

지정된 디버깅/분석 라이브러리를 로드합니다. 이 옵션은 이 옵션-agentlib으로 대체되었습니다.

-XX: CMSIncrementalDutyCycle = 백분율

동시 수집기 실행이 허용되는 보조 컬렉션 간의 시간 비율(0~100)을 설정합니다. 이 옵션은 더 이상 사용되지 않는 옵션으로 대체 없이 JDK 8에서 더 이상 사용되지 않습니다. -XX:+CMSIncrementalMode

-XX: CMSIncrementalDutyCycleMin = 백분율

보조 컬렉션 사이의 시간 비율(0~100)을 설정합니다. -XX:+CMSIncrementalPacing 활성화된 경우 듀티 사이클의 하한입니다. 이 옵션은 더 이상 사용되지 않는 옵션으로 대체 없이 JDK 8에서 더 이상 사용되지 않습니다. -XX:+CMSIncrementalMode

-XX:+ CMS증분 모드

CMS 수집기의 증분 모드를 활성화합니다. 이 옵션은 JDK 8에서 더 이상 사용되지 않으며 다른 옵션과 함께 대체할 수 없습니다CMSIncremental.

-XX: CMSIncrementalOffset = 백분율

마이너 세트 사이의 기간 동안 증분 모드 듀티 사이클이 오른쪽으로 이동하는 시간 비율(0~100)을 설정합니다. 이 옵션은 더 이상 사용되지 않는 옵션으로 대체 없이 JDK 8에서 더 이상 사용되지 않습니다. -XX:+CMSIncrementalMode

-XX:+ CMS증분 속도

JVM이 실행되는 동안 수집된 통계를 기반으로 증분 모드 듀티 사이클의 자동 조정을 활성화합니다. 이 옵션은 더 이상 사용되지 않는 옵션으로 대체 없이 JDK 8에서 더 이상 사용되지 않습니다. -XX:+CMSIncrementalMode

-XX: CMSIncrementalSafetyFactor = 백분율

듀티 사이클을 계산할 때 보수성을 추가하는 데 사용되는 시간 비율(0~100)을 설정합니다. 이 옵션은 더 이상 사용되지 않는 옵션으로 대체 없이 JDK 8에서 더 이상 사용되지 않습니다. -XX:+CMSIncrementalMode

-XX:CMSInitiatingPermOccupancyFraction = 백분율

GC를 시작하는 영구 세대 점유 비율(0~100)을 설정합니다. 이 옵션은 JDK 8에서 더 이상 사용되지 않으며 교체할 필요가 없습니다.

-XX:MaxPermSize = 크기

최대 영구 생성 공간 크기를 바이트 단위로 설정합니다. 이 옵션은 JDK 8에서 더 이상 사용되지 않으며 -XX:MaxMetaspaceSize 옵션으로 대체되었습니다.

-XX:PermSize = 크기

영구 생성을 위해 할당된 공간(바이트 단위)을 설정합니다. 이를 초과하면 가비지 수집이 시작됩니다. 이 옵션은 JDK 8에서 더 이상 사용되지 않으며 이 옵션으로 대체되었습니다. -XX:MetaspaceSize

-XX:+ 분할 검증기 사용

확인 프로세스를 분할할 수 있습니다. 기본적으로 이 옵션은 이전 버전에서 활성화되었으며 확인은 유형 참조(컴파일러에 의해 수행됨)와 유형 검사(JVM 런타임에 의해 수행됨)의 두 단계로 구분됩니다. 이 옵션은 JDK 8에서 더 이상 사용되지 않으며 유효성 검사는 이제 기본적으로 분할되어 비활성화할 수 없습니다.

-XX:+ 문자열 캐시 사용

일반적으로 할당된 문자열의 캐싱을 활성화합니다. 이 옵션은 JDK 8에서 제거되었으므로 교체할 필요가 없습니다.

Je suppose que tu aimes

Origine blog.csdn.net/smallbirdnq/article/details/132967867
conseillé
Classement