news 2026/6/10 18:26:41

分析GC日志

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分析GC日志

GC日志参数

    • 01-GC日志参数
    • 02-GC日志格式
      • GC日志分类
      • GC日志结构剖析
      • Minor GC 日志解析
      • Full GC 日志解析
    • 上一篇

01-GC日志参数

-verbose:gc输出gc日志信息,默认输出到标准输出

-XX:+PrintGC输出GC日志。类似:-verbose:gc
-XX:+PrintGCDetails在发生垃圾回收时打印内存回收详细的日志,并在进程退出时输出当前内存各区域分配情况

-XX:+PrintGCTimeStamps输出GC发生时的时间戳

-XX:+PrintGCDateStamps输出GC发生时的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)

-XX:+PrintHeapAtGC每一次GC前和GC后,都打印堆信息

-Xloggc:<file>表示把GC日志写入到一个文件中去,而不是打印到标准输出中

在线分析gc日志

02-GC日志格式

GC日志分类

  1. MinorGC

MinorGC(或young GC或YGC)日志:

[GC (Allocation Failure) [PSYoungGen: 31744K->2192K(36864K)] 31744K->2200K(121856K), 0.0139308 secs] [Times: user=0.05 sys=0.01, real=0.01 secs]
  1. FullGC

Full GC日志介绍:

[Full GC (Metadata GC Threshold) [PSYoungGen: 5104K->0K(132096K)] [ParOldGen: 416K->5453K(50176K)] 5520K->5453K(182272K), [Metaspace: 20637K->20637K(1067008K)], 0.0245883 secs] [Times: user=0.06 sys=0.00, real=0.02 secs]

GC日志结构剖析

  1. 垃圾收集器
使用Serial收集器在新生代的名字是Default New Generation,因此显示的是"[DefNew" 使用ParNew收集器在新生代的名字会变成"[ParNew",意思是"Parallel New Generation" 使用Parallel Scavenge收集器在新生代的名字是"[PSYoungGen",这里的JDK1.7使用的就是PSYoungGen 使用Parallel Old Generation收集器在老年代的名字是"[ParOldGen" 使用G1收集器的话,会显示为"garbage-first heap" Allocation Failure 表明本次引起GC的原因是因为在年轻代中没有足够的空间能够存储新的数据了。
  1. GC前后情况
我们可以发现GC日志格式的规律一般都是:GC前内存占用—>GC后内存占用(该区域内存总大小) [PSYoungGen: 5986K->696K(8704K)] 5986K->704K(9216K) 中括号内:GC回收前年轻代堆大小,回收后大小,(年轻代堆总大小) 括号外:GC回收前年轻代和老年代大小,回收后大小,(年轻代和老年代总大小)
  1. GC时间
GC日志中有三个时间:user,sys和real user – 进程执行用户态代码(核心之外)所使用的时间。这是执行此进程所使用的实际 CPU 时间,其他进程和此进程阻塞的时间并不包括在内。在垃圾收集的情况下,表示 GC 线程执行所使用的 CPU 总时间。 sys – 进程在内核态消耗的 CPU 时间,即在内核执行系统调用或等待系统事件所使用的 CPU 时间 real – 程序从开始到结束所用的时钟时间。这个时间包括其他进程使用的时间片和进程阻塞的时间(比如等待 I/O 完成)。对于并行gc,这个数字应该接近(用户时间+系统时间)除以垃圾收集器使用的线程数。 由于多核的原因,一般的GC事件中,real time是小于sys + user time的,因为一般是多个线程并发的去做GC,所以real time是要小于sys+user time的。如果real>sys+user的话,则你的应用可能存在下列问题:IO负载非常重或者是CPU不够用。

Minor GC 日志解析

Full GC 日志解析

上一篇

垃圾回收器

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 1:20:45

保姆级教程:Claude Code接入GLM-4.6(零基础也能跟着做)

文章目录0. 先讲清楚&#xff1a;Claude Code 和 GLM-4.6 是什么1. 你需要准备什么1.1 你需要的软件/账号1.2 你会用到的几个“新词”解释2. 第一步&#xff1a;安装 Node.js&#xff08;Claude Code 必备&#xff09;2.1 Windows 安装&#xff08;最简单方式&#xff09;2.2 m…

作者头像 李华
网站建设 2026/6/10 13:39:19

伺服驱动器中DSP与FPGA高效协同架构解析

一、整体架构二、FPGA 负责的功能&#xff08;硬件实时层&#xff09;1. PWM 波形生成空间矢量 PWM (SVPWM)死区时间控制最小零矢量控制频率&#xff1a;16kHz2. 电流采样与处理// Sigma-Delta调制器处理*CurSampCtrl // ADC采样启动延时设置*CurSampCtrlSec // 第二组采…

作者头像 李华
网站建设 2026/6/10 14:45:59

【TextIn大模型加速器 + 火山引擎】基于 TextIn 与火山引擎豆包大模型的智能文档解析工作流构建与实践

目录 前言第一章&#xff1a;数字基座的构建——Dify 环境初始化第二章&#xff1a;核心解析引擎的接入——TextIn 节点编排第三章&#xff1a;中间件的逻辑处理——代码执行节点第四章&#xff1a;火山引擎的大脑驱动——模型配置与部署第五章&#xff1a;提示词工程与逻辑闭环…

作者头像 李华
网站建设 2026/6/9 21:38:16

Open-AutoGLM实战指南:3步搭建属于你的智能外卖下单系统

第一章&#xff1a;Open-AutoGLM 外卖自动下单在现代智能服务系统中&#xff0c;自动化下单技术正逐步改变用户与平台的交互方式。Open-AutoGLM 是一个基于大语言模型&#xff08;LLM&#xff09;驱动的外卖自动下单框架&#xff0c;能够理解自然语言指令并自主完成从菜单选择到…

作者头像 李华
网站建设 2026/6/10 14:46:21

【高可用AI服务构建】:Open-AutoGLM Docker集群部署全方案

第一章&#xff1a;Open-AutoGLM高可用架构概述Open-AutoGLM 是一个面向大规模语言模型推理与自动化任务调度的开源框架&#xff0c;其高可用架构设计旨在保障服务在复杂生产环境下的稳定性、可扩展性与容错能力。系统采用分布式微服务架构&#xff0c;通过多节点协同与负载均衡…

作者头像 李华
网站建设 2026/6/10 16:10:00

开源AI智能名片链动2+1模式商城小程序的“展现”策略研究

摘要&#xff1a;本研究聚焦于开源AI智能名片链动21模式商城小程序的“展现”策略。通过深入分析其展现形式、影响机制以及实际案例&#xff0c;揭示该策略对用户购买欲和驻留时间的关键作用。研究采用混合方法&#xff0c;结合定量与定性分析&#xff0c;发现独特且精准的展现…

作者头像 李华