บทความนี้ส่วนใหญ่ศึกษาการย้ายถิ่นของพารามิเตอร์บันทึก Java9 GC
การบันทึกที่รวม JVM และ GC
Java9 ได้เปิดตัว Log Framework แบบครบวงจรและยังรวมถึงเอาต์พุตบันทึกและการกำหนดค่าที่เกี่ยวข้องกับ GC
JEP ที่เกี่ยวข้อง (ข้อเสนอการปรับปรุง JDK)
XLOG ไวยากรณ์
-xlog [: ตัวเลือก] ตัวเลือก: = [<mhat>] [: [<output>] [: [<decorators>] [: <output-options>]]] 'help' 'disable' อะไร: = <Selector> [, ... ] selector: = <tag-set> [*] 'stderr' 'stdout' [file =] <filename> นักตกแต่ง: = <นักตกแต่ง> [, ... ] 'ไม่มี' มัณฑนากร: = เวลา uptimemillis uptimemillis timenanos uptimenanos pid tid tags outute-out-noted
อะไร
ส่วนใหญ่กำหนดค่าแท็กและระดับ
ติดแท็ก
ในกรณีที่ทั้งหมดแสดงถึงแท็กทั้งหมดอื่น ๆ มีดังนี้:
เพิ่ม, อายุ, การจัดสรร, คำอธิบายประกอบ, AOT, อาร์กิวเมนต์, แนบ, สิ่งกีดขวาง, สิ่งกีดขวาง, การลำเอียง, บล็อก, บอท, เบรกพอยต์, bytecode, การสำรวจสำมะโนประชากร, ชั้นเรียน, Classshisto, การทำความสะอาด, การบดอัด, ตัวเปรียบเทียบ, ข้อ จำกัด Hashtables, heap, humongous, ihop, iklass, init, itables, jfr, jni, jvmti, listeness, โหลด, โหลด, การบันทึก, การบันทึก, เครื่องหมาย, การทำเครื่องหมาย, เมตา, metaspace, mu, modules แพตช์, เส้นทาง, เฟส, แผ่น, preorder, โปรโมชั่น, การป้องกันโดเมน, การล้าง, การกำหนดใหม่, Ref, การปรับแต่ง, ภูมิภาค, remset, แก้ไข, safepoint, scange, scru b, การตั้งค่า, stackmap, stacktrace, stackwalk, เริ่มต้น อัปเดต, การตรวจสอบ, การตรวจสอบ, vMoperation, vTables, workgang
ระดับ
ส่วนใหญ่แบ่งออกเป็นปิด, ติดตาม, debug, ข้อมูล, คำเตือน, ข้อผิดพลาด
เอาท์พุท
- stdout (`ส่งเอาต์พุตไปยัง stdout`)- stderr (` ส่งเอาต์พุตไปยัง stderr`)- file = filename (`ส่งเอาต์พุตไปยังไฟล์ข้อความ (s)`)
มีสามประเภทดังกล่าวข้างต้น หากคุณระบุไฟล์คุณสามารถใช้ตัวแปร %P เพื่อแสดง PID ของ JVM ปัจจุบันและใช้ %T เพื่อแสดงถึงการประทับเวลาเริ่มต้นของ JVM ตัวอย่างเช่น
-xlog: GC: DemoApp-GC-%P-%T.Log
ชื่อไฟล์เอาต์พุตมีดังนี้:
DemoApp-GC-1678-2018-03-01_21-44-18.log
นักตกแต่ง
หากไม่ได้ระบุค่าเริ่มต้นคือการใช้งานระดับและแท็ก ตัวอย่างเช่น
[3.080s] [ข้อมูล] [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, decrotators เป็น 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 7.470ms [2951ms] [1867] GC (3) เครื่องหมายหยุดชั่วคราว (Metadata GC Threshold) 149m-> 30m (256m) 27.175ms [2951ms] [1867] GC (4) วงจรที่สอดคล้องกัน [2972ms] [1867] GC (4) 5.132ms [2974ms] [1867] GC (4) เสร็จสิ้นข้อมูลสด 0.000ms [2974ms] [1867] GC (4) หยุดการทำความสะอาดชั่วคราว 32m-> 32m (256m) 0.214ms [2976ms] [1867] GC
การโยกย้ายพารามิเตอร์ที่เกี่ยวข้องของ GC เก่า
| ธงคอลเลกชัน Garbage Legacy (GC) | การกำหนดค่า xlog | การแสดงความคิดเห็น |
|---|---|---|
| g1printheapregions | -xlog: gc+region = trace | ไม่สามารถใช้ได้ |
| gclogfilesize | ไม่มีการกำหนดค่า | การหมุนบันทึกถูกจัดการโดยเฟรมเวิร์ก |
| numberofgclogfiles | ไม่สามารถใช้ได้ | การหมุนบันทึกถูกจัดการโดยเฟรมเวิร์ก |
| printadaptiveSepolicy | -xlog: ergo*= ระดับ | ใช้ระดับของการดีบักสำหรับข้อมูลส่วนใหญ่หรือระดับของการติดตามสำหรับสิ่งที่บันทึกไว้สำหรับ printadaptivesizepolicy |
| printgc | -xlog: GC | ไม่สามารถใช้ได้ |
| printgcapplicationCurrentTime | -xlog: SafePoint | โปรดทราบว่า PrintGCapplicationCurrentTime และ PrintGCapplicationStoppedTime ถูกบันทึกไว้บนแท็กเดียวกันและไม่ได้แยกออกจากการบันทึกใหม่ |
| printgcapplicationstoppedtime | -xlog: SafePoint | โปรดทราบว่า PrintGCapplicationCurrentTime และ PrintGCapplicationStoppedTime ถูกบันทึกไว้บนแท็กเดียวกันและไม่ได้แยกออกจากการบันทึกใหม่ |
| printgccause | ไม่สามารถใช้ได้ | ตอนนี้สาเหตุของ GC ถูกบันทึกไว้เสมอ |
| printgcdatestamps | ไม่สามารถใช้ได้ | แสตมป์วันที่ถูกบันทึกโดยเฟรมเวิร์ก |
| printgcdetails | -xlog: GC* | ไม่สามารถใช้ได้ |
| printgcid | ไม่สามารถใช้ได้ | ตอนนี้ GC ID ถูกบันทึกไว้เสมอ |
| printgctasktimestamps | -xlog: task*= debug | ไม่สามารถใช้ได้ |
| printgctimestamps | ไม่สามารถใช้ได้ | การประทับเวลาถูกบันทึกโดยเฟรมเวิร์ก |
| Printheapatgc | -xlog: gc+heap = trace | ไม่สามารถใช้ได้ |
| printreferencegc | -xlog: ref*= debug | โปรดทราบว่าในการบันทึกแบบเก่า printreferenceGC มีผลเฉพาะเมื่อเปิดใช้งาน printgcdetails |
| printstringdeduplicationstatistics | -xlog: stringdedUp*= debug | ไม่สามารถใช้ได้ |
| PrintNuringDistribution | -xlog: อายุ*= ระดับ | ใช้ระดับของการดีบักสำหรับข้อมูลที่เกี่ยวข้องมากที่สุดหรือระดับการติดตามสำหรับสิ่งที่บันทึกไว้สำหรับการพิมพ์การกระจาย |
| USEGCLOGFILEROTATION | ไม่สามารถใช้ได้ | สิ่งที่บันทึกไว้สำหรับ printnuringDistribution |
การโยกย้ายพารามิเตอร์รันไทม์มรดก
| ธงรันไทม์มรดก | การกำหนดค่า xlog | การแสดงความคิดเห็น |
|---|---|---|
| TraceExceptions | -xlog: ข้อยกเว้น = ข้อมูล | ไม่สามารถใช้ได้ |
| traceclassloading | -xlog: คลาส+โหลด = ระดับ | ใช้ระดับ = ข้อมูลสำหรับข้อมูลปกติหรือระดับ = ดีบักสำหรับข้อมูลเพิ่มเติม ในไวยากรณ์การบันทึกแบบครบวงจร, -verbose: คลาส Equals -xlog: คลาส+โหลด = ข้อมูล, คลาส+unload = ข้อมูล |
| traceclassloadingpreorder | -xlog: คลาส+preorder = debug | ไม่สามารถใช้ได้ |
| traceclassunloading | -xlog: คลาส+unload = ระดับ | ใช้ระดับ = ข้อมูลสำหรับข้อมูลปกติหรือระดับ = ติดตามข้อมูลเพิ่มเติม ในไวยากรณ์การบันทึกแบบครบวงจร, -verbose: คลาส Equals -xlog: คลาส+โหลด = ข้อมูล, คลาส+unload = ข้อมูล |
| การใช้คำกริยา | -xlog: การตรวจสอบ = ข้อมูล | ไม่สามารถใช้ได้ |
| traceclasspaths | -xlog: คลาส+พา ธ = ข้อมูล | ไม่สามารถใช้ได้ |
| traceclassresolution | -xlog: class+resolve = debug | ไม่สามารถใช้ได้ |
| traceclassinitialization | -xlog: คลาส+init = ข้อมูล | ไม่สามารถใช้ได้ |
| traceloaderconstraints | -xlog: คลาส+โหลดเดอร์+ข้อ จำกัด = ข้อมูล | ไม่สามารถใช้ได้ |
| traceclassloaderdata | -xlog: คลาส+โหลดเดอร์+data = ระดับ | ใช้ระดับ = การดีบักสำหรับข้อมูลปกติหรือระดับ = ติดตามสำหรับข้อมูลเพิ่มเติม |
| tracesafepointcleanuptime | -xlog: SafePoint+Cleanup = ข้อมูล | ไม่สามารถใช้ได้ |
| tracesafepoint | -xlog: safePoint = debug | ไม่สามารถใช้ได้ |
| tracemonitorinflation | -xlog: MonitorInflation = DEBUG | ไม่สามารถใช้ได้ |
| tracebiasedlocking | -xlog: ลำเอียง locking = ระดับ | ใช้ระดับ = ข้อมูลสำหรับข้อมูลปกติหรือระดับ = ติดตามข้อมูลเพิ่มเติม |
| Traceeredefineclasses | -xlog: redefine+class*= ระดับ | ระดับ = ข้อมูล = การดีบักและ = ติดตามให้ข้อมูลที่เพิ่มขึ้น |
Java9 ยังรวมการเลือกและเอาต์พุตของบันทึก GC ลงใน XLOG และสามารถย้ายถิ่นได้ตามตารางการย้ายถิ่นที่ได้รับจากเจ้าหน้าที่