---
title: Java垃圾回收器和日志级别说明
description: "当前GC日志解析支持：PS（Parallel Scavenge）、CMS、G1和ZGC垃圾回收器；其中Java 8版本支持PS、CMS和G1，Java 9及以后支持G1，Java 17及之后支持ZGC。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/profiler/kunpengoper_06_0016.html
sourcePath: /source/zh/kunpengdevps/profiler/profiler/kunpengoper_06_0016.html
indexId: 44c281561b4582ffe9b782b8a7b0e9be936648ab5abfd4d701563bcefabb916c66
---
# Java垃圾回收器和日志级别说明

当前GC日志解析支持：PS（Parallel Scavenge）、CMS、G1和ZGC垃圾回收器；其中Java 8版本支持PS、CMS和G1，Java 9及以后支持G1，Java 17及之后支持ZGC。

GC日志页面如未获取到数据，请确认是否开启对应日志级别，在Java进程启动时添加参数，开启后即可查看数据。日志开启级别如表1所示。

- 如果使用Java版本为Java 8，启动进程时未指定垃圾回收器，默认使用PS垃圾回收器。
  G1垃圾回收器：-XX:+UseG1GC；CMS垃圾回收器：-XX:+UseConcMarkSweepGC；PS垃圾回收器：-XX:+UseParallelGC。

- Java 8启动时添加日志打印参数：-verbose:gc -XX:+PrintHeapAtGC -Xloggc:/filepath/filename.log或-XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:/filepath/filename.log。
  其中filepath为日志保存路径，filename为日志名称，日志名称支持动态参数：%p（pid）、%t（系统时间戳）。

- Java 9及以后版本日志打印参数格式详见  JEP 158: Unified JVM Logging(https://openjdk.org/jeps/158)
。
- ZGC垃圾回收器（JDK 15及以后）：-XX:+UseZGC，分代ZGC垃圾回收器（JDK 21及以后）：-XX:+UseZGC -XX:+ZGenerational。


**表1 日志开启级别对照表**

| Java版本 | 垃圾回收器 | 日志开启级别 | 可查看页面 |
| --- | --- | --- | --- |
| Java 8 | G1 | \-verbose:gc | 线性度和细化分析中的详细阶段、Eden、Survivor、元数据区暂无数据。 |
| Java 8 | G1 | \-XX:+PrintGCDetails | 可显示全部数据，其中元数据区需有Full GC事件时才有相关记录。 |
| Java 8 | G1 | \-XX:+PrintHeapAtGC（可选） | 可显示内存占用变化的全部数据。 |
| Java 8 | CMS | \-verbose:gc | 线性度、细化分析中的详细阶段、Old、Young、Eden、Survivor、元数据区暂无数据。 |
| Java 8 | CMS | \-XX:+PrintGCDetails | 可显示除Eden、Survivor外的其余数据，其中元数据区需有Full GC事件时才有相关记录。 |
| Java 8 | CMS | \-XX:+PrintHeapAtGC（可选） | 可显示内存占用变化的全部数据。 |
| Java 8 | PS | \-verbose:gc | 线性度、细化分析中的详细阶段、Old、Young、Eden、Survivor、元数据区暂无数据。 |
| Java 8 | PS | \-XX:+PrintGCDetails | 可显示除Eden、Survivor外的其余数据，其中元数据区需有Full GC事件时才有相关记录。 |
| Java 8 | PS | \-XX:+PrintHeapAtGC（可选） | 可显示内存占用变化的全部数据。 |
| Java 9及之后版本 | G1 | \-Xlog:gc\*=info | [gc]标签细化分析可显示GC暂停相关信息，Heap堆变化信息。 |
| Java 9及之后版本 | G1 | \-Xlog:gc\*=info | [gc,cpu]标签可显示线性度信息。 |
| Java 9及之后版本 | G1 | \-Xlog:gc\*=info | [gc,marking]标签可显示并行阶段信息。 |
| Java 9及之后版本 | G1 | \-Xlog:gc\*=debug | [gc,heap]标签可查看Eden、Survivor、Metaspace内存变化。 |
| Java 9及之后版本 | G1 | \-Xlog:gc\*=debug | [gc,phases]标签可查看GC暂停细化的详情阶段。 |
| Java 17及之后版本 | ZGC | \-Xlog:gc\*=info | [gc,start]标签可显示GC成因，GC暂停时间，堆变化信息。 [gc,phases]标签可显示GC暂停的详情阶段。 |
| Java 17及之后版本 | ZGC | \-Xlog:gc\*=debug | [gc,heap]标签可查看Metaspace内存变化。 |
| Java 21 | 分代ZGC | \-XX:+ZGenerational \-Xlog:gc\*=info | [gc,start]标签可显示GC成因，GC暂停时间，堆变化信息。 [gc,phases]标签可显示GC暂停的详情阶段以及年轻代和老年代内存变化。 |
| Java 21 | 分代ZGC | \-XX:+ZGenerational \-Xlog:gc\*=debug | [gc,heap]标签可查看Metaspace内存变化。 |
