当前位置: 首页 > news >正文

分析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 日志解析

上一篇

垃圾回收器

http://www.cnnetsun.cn/news/167177.html

相关文章:

  • 【Open-AutoGLM快递轨迹追踪实战】:掌握AI驱动物流监控的5大核心技术
  • 【Open-AutoGLM酒店比价实战】:揭秘AI驱动的实时价格监控系统核心技术
  • requirements.txt配置踩坑实录,99%新手都会忽略的5个关键包
  • Open-AutoGLM部署效率提升10倍?你不可错过的Docker优化策略
  • 收藏!非技术党也能玩转大模型:10大行业落地指南+可复制提示词模板
  • Hugging Face下载Open-AutoGLM太慢怎么办?资深工程师推荐4种加速方案
  • 【专家级调优建议】:提升Open-AutoGLM ModelScope镜像运行效率的7种方法
  • 多进程相关函数
  • 持续集成中的测试策略:构建高效质量保障体系
  • 什么是持续集成CI,与DevOps关系
  • 结构类算法题
  • 为什么你的Open-AutoGLM部署总失败?Docker最佳实践全解析
  • Open-AutoGLM安装总失败?深度解析Python依赖树中的隐藏陷阱
  • 软件测试生命周期管理的核心框架与实践策略
  • 计算机毕设java疫情背景下大学生宿舍管理系统 基于Java的疫情环境下高校宿舍智能化管理系统开发 疫情防控期间大学生宿舍管理的Java平台构建与应用
  • 别再有线连接了!Open-AutoGLM无线调试究竟有多强大?
  • Open-AutoGLM权限困境破解,一文搞定非root环境下的完整部署流程
  • 安卓13适配倒计时,Open-AutoGLM开发者必须掌握的8项声明式权限配置技巧
  • Open-AutoGLM模型下载加速指南(仅限内部使用的CDN加速方案曝光)
  • 复盘:我们是如何将测试周期缩短50%的
  • spring16,17-加载properties文件,容器
  • 黑客和程序员谁更胜一筹?从技术实力、就业范围到赚钱潜力的全方位对比
  • 揭秘Open-AutoGLM虚拟机部署难题:99%新手都会忽略的3个关键细节
  • Open-AutoGLM如何秒连WiFi?:工程师不会告诉你的4种高效方案
  • Open-AutoGLM模型拉取卡顿?:3步诊断+4大加速引擎推荐
  • 开题季救星:除了 paperzz,这 7 个 AI 工具能让你的报告 “一键丝滑”
  • RAG不死反进化:2025年大模型时代RAG技术架构与演进全解析
  • 基于51单片机智能老人防跌倒报警体温GSM短信上报
  • 基于51单片机云台控制系统电路设计
  • 基于51单片机手机无线蓝牙APP遥控智能车系统