이 기사는 주로 Java9 GC 로그 매개 변수의 마이그레이션을 연구합니다.
JVM 및 GC를 통합하는 기록
Java9는 통합 로그 프레임 워크를 도입했으며 GC 관련 로그 출력 및 구성도 포함했습니다.
관련 JEP (JDK 강화 제안)
XLOG 구문
-xlog [: 옵션] 옵션 : = [<what>] [: [<output>] [: [<ceputators>] [: <output-options>]]] 'help' 'help' 'hearable'wat : = <selector> [, ...] selector : = <tag-set> 'stderr' 'stdout'[file =] <filename> decorators : = <cectorator> [, ...] 'None'Decorator : = 시간 상향 시간 타임 메릴리스 UptimeMillis timenanos uptimenanos pid tid level tag 출력-옵션 : = <output_option> [, ...] output-option : = value = kb> kb> kb> kb> kb> kb> kb> kb>
무엇
주로 태그와 레벨을 구성합니다
꼬리표
모든 태그를 나타내는 경우, 다른 태그는 다음과 같습니다.
추가, 나이, 할당, 주석, AOT, 인수, 첨부, 장벽, 장벽, BiasedLocking, Blocks, Bot, Breakpoint, Bytecode, Census, Classshisto, Cleanup, Compaction, Complaction, Supartaints, Constantpool, Coops, CPU, CSET, DATA, DEFAULTMETHOD, D UMP, ERGO, 이벤트, Exceptions, Except, Except, except, exceptions, exceptions, exceptions. 해시 타이블, 힙, 겸손한, ihop, iklass, init, itables, jfr, jni, jvmti, livence, load, loader, logging, mark, marking, metaspace, methappace, method, mu, modules, monitorinflatio n, monitormismatch, nmethod, partertagging, obsol, ooopmap,, page, opepmap, opepmap, oboopmap 경로, 단계, 플래브, 선주문, 프로모션, 보호 도메인, 퍼지, 재정의, Ref, Refine, Remet, REMSET, RESONBOL, SAFEPOINT, SCANGE, SCRU B, STACKMAP, StackTrace, Stackwalk, Start, StartSuptime, Stats, StringDup, Stringtable, Subclass, Spewivor, System, Task, Time, Time, Timer, Tlab, Tlab, Tlab, Therm, TOSTION, SCANGE, SCRANE, SCRANE, SCRANE. 검증, vmoperation, vtables, workgang
수준
주로 꺼짐, 추적, 디버그, 정보, 경고, 오류로 나뉩니다
산출
-STDOUT (`stdout`으로 출력을 보냅니다.)- stderr (`stderr로 출력을 보냅니다 ')- 파일 = filename (`텍스트 파일로 출력을 보냅니다.`)
위와 같이 세 가지 유형이 있습니다. 파일을 지정하면 %P 변수를 사용하여 현재 JVM의 PID를 나타내고 %t를 사용하여 JVM의 시작 시간 스탬프를 나타낼 수 있습니다. 예를 들어
-xlog : gc : demoapp-gc-%p-%t.log
출력 파일 이름은 다음과 같습니다.
Demoapp-GC-1678-2018-03-01_21-44-18.LOG
데코레이터
지정되지 않으면 기본값은 가동 시간, 레벨 및 태그입니다. 예를 들어
[3.080s] [info] [GC, CPU] GC (5) 사용자 = 0.03S SYS = 0.00S Real = 0.01s
예
-xlog : gc = trace : file = gctrace.txt : uptimemillis, pid : filecount = 5, filesize = 1024
태그는 gc, levle은 추적이고, 회전 파일은 5이고, 각 파일은 1m이고, 파일 이름은 gctrace.txt, 감소기는 Uptimemillis 및 PID입니다.
출력 인스턴스
[1110ms] [1867] GC (2) 중지 비고 17m-> 17m (256m) 2.024ms [1110ms] [1867] GC (2) 라이브 데이터 0.000ms [1110ms] [1867] GC (2) 정리 17m-> 17m (256m) 0.177ms [1112ms] [1867] GC (2) GC (2) GC (2) 7.470ms [2951ms] [1867] GC (3) 초기 마크 (메타 데이터 GC 임계 값) 149m-> 30m (256m) 27.175ms [2951ms] [1867] GC (4) 동시주기 [2972ms] [1867] GC (4) 연설 32m-> 32m (256m). 5.132ms [2974ms] [1867] GC (4) 라이브 데이터 마무리 0.000ms [2974ms] [1867] GC (4) 일시 정지 정리 32m-> 32m (256m) 0.214ms [2976ms] [1867] GC (4) Concurrent 사이클 25.422ms
오래된 GC의 관련 매개 변수 마이그레이션
| 레거시 쓰레기 수집 (GC) 플래그 | XLOG 구성 | 논평 |
|---|---|---|
| G1PRINTHEAPHEATIONS | -xlog : gc+region = trace | 적용 할 수 없습니다 |
| gclogfilesize | 사용 가능한 구성이 없습니다 | 로그 회전은 프레임 워크에 의해 처리됩니다. |
| 숫자로 gclogfiles | 적용 할 수 없습니다 | 로그 회전은 프레임 워크에 의해 처리됩니다. |
| printadaptivesizepolicy | -xlog : ergo*= 레벨 | 대부분의 정보에 대한 수준의 디버그 또는 printadaptivesizepolicy에 기록 된 모든 것에 대한 추적 수준을 사용하십시오. |
| printgc | -xlog : GC | 적용 할 수 없습니다 |
| printgCapplicationConcurrentTime | -xlog : SafePoint | PrintGCapplicationConcurrentTime 및 PrintGCapplicationStoppedTime은 동일한 태그에 로그인되어 새 로깅에서 분리되지 않았습니다. |
| printgcapplicationStoppedTime입니다 | -xlog : SafePoint | PrintGCapplicationConcurrentTime 및 PrintGCapplicationStoppedTime은 동일한 태그에 로그인되어 새 로깅에서 분리되지 않았습니다. |
| printgccause | 적용 할 수 없습니다 | GC 원인은 이제 항상 기록됩니다. |
| printgcdatestamps | 적용 할 수 없습니다 | 날짜 스탬프는 프레임 워크에 의해 기록됩니다. |
| printgcdetails | -xlog : gc* | 적용 할 수 없습니다 |
| printgcid | 적용 할 수 없습니다 | GC ID는 이제 항상 기록됩니다. |
| printgctasktimestamps | -xlog : task*= 디버그 | 적용 할 수 없습니다 |
| printgctimestamps | 적용 할 수 없습니다 | 타임 스탬프는 프레임 워크에 의해 기록됩니다. |
| 프린트 피아트 GC | -xlog : gc+힙 = 트레이스 | 적용 할 수 없습니다 |
| PrintreferenceGC | -xlog : ref*= 디버그 | 이전 로깅에서 PrintreferenceGC는 PrintGCDetails도 활성화 된 경우에만 영향을 미쳤습니다. |
| PrintStringDeduplicationStatistics | -xlog : stringdedup*= 디버그 | 적용 할 수 없습니다 |
| printteningdiptribution | -xlog : age*= 레벨 | 가장 관련성이 높은 정보에 대한 디버그 수준 또는 printtenuringDistribution을 위해 기록 된 모든 것에 대한 추적 수준을 사용하십시오. |
| usegclogfilerotation | 적용 할 수 없습니다 | PrintTenteringDistribution에 기록 된 내용. |
레거시 런타임 매개 변수 마이그레이션
| 레거시 런타임 플래그 | XLOG 구성 | 논평 |
|---|---|---|
| traceExceptions | -xlog : 예외 = 정보 | 적용 할 수 없습니다 |
| Traceclassloading | -xlog : class+load = 레벨 | 일반 정보에는 레벨 = 정보를 사용하거나 추가 정보에 대해서는 레벨 = 디버그를 사용하십시오. Unified Logging Syntax에서 -verbose : class Equals -xlog : class+load = info, class+unload = info. |
| traceclassloadingpreorder | -xlog : class+preorder = debug | 적용 할 수 없습니다 |
| traceclassunloading | -xlog : class+unload = level | 일반 정보에는 레벨 = 정보를 사용하거나 추가 정보는 레벨 = 추적을 사용합니다. Unified Logging Syntax에서 -verbose : class Equals -xlog : class+load = info, class+unload = info. |
| 동사 조화 | -xlog : verification = info | 적용 할 수 없습니다 |
| Traceclasspaths | -xlog : class+path = info | 적용 할 수 없습니다 |
| traceclassresolution | -xlog : class+resolve = debug | 적용 할 수 없습니다 |
| traceclassinitialization | -xlog : class+init = info | 적용 할 수 없습니다 |
| Traceloaderconstraints | -xlog : 클래스+로더+제약 조건 = 정보 | 적용 할 수 없습니다 |
| TraceclassloaderData | -xlog : 클래스+로더+데이터 = 레벨 | 일반 정보 또는 추가 정보에 대해서는 레벨 = 디버그를 사용하십시오. |
| TracesAfeApointCleanUptime | -xlog : SafePoint+Cleanup = Info | 적용 할 수 없습니다 |
| 추적 안전 포인트 | -xlog : SafePoint = 디버그 | 적용 할 수 없습니다 |
| tracemonitorinlation | -xlog : monitorInflation = debug | 적용 할 수 없습니다 |
| TraceBiasedLocking | -xlog : biasedLocking = 레벨 | 일반 정보에는 레벨 = 정보를 사용하거나 추가 정보는 레벨 = 추적을 사용합니다. |
| TracerEdeFineClasses | -xlog : redefine+class*= 레벨 | level = info, = debug 및 = trace는 증가하는 정보를 제공합니다. |
Java9는 또한 GC 로그의 XLOG에 대한 선택 및 출력을 통합하며 공무원이 제공 한 마이그레이션 테이블에 따라 마이그레이션 할 수 있습니다.