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

GC的查看

gc日志:📎log.txt

看法简述:

内存的状况(只是展示堆用,不对应任何日志信息)

示例片段1

[GC (Allocation Failure) [PSYoungGen: 64604K->10120K(75776K)] 64604K->61328K(249344K), 0.0114108 secs] [Times: user=0.06 sys=0.03, real=0.01 secs] 
  1. 事件类型
    • [GC (Allocation Failure)]:这表示这是一个垃圾回收事件,具体原因是分配失败(即没有足够的内存来分配新对象)。
  1. 垃圾回收范围
    • [PSYoungGen: 64604K->10120K(75776K)]:这是年轻代(PSYoungGen)的垃圾回收详情。
      • 64604K 是垃圾回收前年轻代使用的总内存。
      • 10120K 是垃圾回收后年轻代使用的总内存。
      • (75776K) 是年轻代的总大小。
  1. 整体堆信息
    • 64604K->61328K(249344K):整个Java堆的信息。
      • 64604K 垃圾回收前整个堆使用的内存。
      • 61328K 垃圾回收后整个堆使用的内存。
      • (249344K) Java堆的总大小。
  1. 消耗时间
    • 0.0114108 secs:这次垃圾回收总共花费的时间是0.0114108秒。
  1. CPU时间
    • [Times: user=0.06 sys=0.03, real=0.01 secs]:提供了关于CPU使用情况的更详细信息。
      • user=0.06 用户模式下CPU使用的时间。
      • sys=0.03 系统模式下CPU使用的时间。
      • real=0.01 实际经过的时间,与前面提到的总的GC时间相同。

示例片段2

[GC (System.gc()) [PSYoungGen: 1300K->32K(75776K)] 2126K->857K(249344K), 0.0003581 secs]
[Full GC (System.gc()) [PSYoungGen: 32K->0K(75776K)] [ParOldGen: 825K->825K(173568K)] 857K->825K(249344K), [Metaspace: 3578K->3578K(1056768K)], 0.0059335 secs]

1. GC事件类型

  • Minor GC(年轻代垃圾回收):在日志中表现为 [GC (System.gc()) [PSYoungGen: ...] 或者不带 (System.gc()) 的类似行。
  • Full GC(全堆垃圾回收):通常会看到 [Full GC (System.gc()) [PSYoungGen: ...] [ParOldGen: ...] 这样的条目。

上面的第一条是Minor GC,它清理了年轻代的部分对象。

第二条是一个Full GC,它同时清理了年轻代和老年代的对象。

2. 内存使用情况

每个GC事件都会报告内存使用前后的情况:

  • PSYoungGen: 1300K->32K(75776K) 表示年轻代从使用了1300KB减少到32KB,总容量为75776KB。
  • 2126K->857K(249344K):堆总空间249344k,回收前使用2126k,回收后使用857k
  • ParOldGen: 825K->825K(173568K) 显示老年代在GC前后大小没有变化,说明老年代中没有可以回收的对象或空间已经非常紧张。
  • (249344K) 是整个堆的大小,包括年轻代和老年代。

3. GC的频率和耗时

  • 每次GC都有一个时间记录,比如 0.0003581 secs0.0059335 secs,这表示该次GC操作花费的时间。
  • 频繁出现的GC事件(尤其是Full GC),如果每次耗时较长,则可能是潜在的问题,因为它会影响应用性能。

示例片段3

[Full GC (Ergonomics) [PSYoungGen: 10272K->0K(140800K)] [ParOldGen: 249894K->250919K(525312K)] 260166K->250919K(666112K), [Metaspace: 3941K->3941K(1056768K)], 0.0146315 secs] [Times: user=0.08 sys=0.00, real=0.02 secs]
  1. 事件类型
    • [Full GC (Ergonomics)]:这是一次由JVM为了优化性能(根据Ergonomics算法)而触发的Full GC。这意味着JVM自动决定进行一次完整的垃圾回收来释放内存。
  1. 年轻代(PSYoungGen)信息
    • [PSYoungGen: 10272K->0K(140800K)]
      • 10272K 表示GC前年轻代使用的内存。
      • 0K 表示GC后年轻代使用的内存,即所有存活的对象都被移到了老年代或其他地方,当前年轻代没有占用任何内存。
      • (140800K) 是年轻代的总大小。
  1. 老年代(ParOldGen)信息
    • [ParOldGen: 249894K->250919K(525312K)]
      • 249894K 表示GC前老年代使用的内存。
      • 250919K 表示GC后老年代使用的内存,可以看到实际上老年代使用的内存量有所增加,这可能是因为从年轻代移动过来的对象。
      • (525312K) 是老年代的总大小。
  1. 整体堆信息
    • 260166K->250919K(666112K)
      • 260166K 表示GC前整个Java堆使用的内存总量(年轻代+老年代)。
      • 250919K 表示GC后整个Java堆使用的内存总量。
      • (666112K) 是整个Java堆的最大容量。
  1. Metaspace信息
    • [Metaspace: 3941K->3941K(1056768K)]:表示Metaspace(元空间,用于存储类的元数据)在GC前后使用量没有变化,分别为3941KB,最大容量为1056768KB。
  1. 消耗时间
    • 0.0146315 secs:这次Full GC总共花费的时间是0.0146315秒。
  1. CPU时间
    • [Times: user=0.08 sys=0.00, real=0.02 secs]:提供了关于CPU使用情况的更详细信息。
      • user=0.08 用户模式下CPU使用的时间。
      • sys=0.00 系统模式下CPU使用的时间。
      • real=0.02 实际经过的时间,与前面提到的总的GC时间相同。

相关文章:

  • OCR技术,金融行业的“数字魔法”✨
  • Python列表全面解析:从基础到高阶操作
  • 前端性能优化2:结合HTTPS与最佳实践,全面优化你的网站性能
  • 普通IT的股票交易成长史--20250429午
  • 误在非开发分支上开发解决方案
  • 大语言模型能否替代心理治疗师的深度拓展研究:fou
  • 通信协议——SPI通信协议
  • 【C++编程入门】:基本语法
  • Discord多账号注册登录:如何同时管理多个账户?
  • 模型上下文协议MCP协议(Model Context Protocol)未来应用场景分析(多智能体协作A2A协议)
  • CA添加删除辅小区信令流程
  • React 第三十五节 Router 中useNavigate 的作用及用途详解
  • 如何在Windows中更改文档默认打开方式
  • 【Leetcode 每日一题】2962. 统计最大元素出现至少 K 次的子数组
  • 从Markdown到专业文档:如何用Python打造高效格式转换工具
  • 文件基础-----C语言经典题目(11)
  • 数据结构(十)---链式队列
  • 一文掌握 npm 基础与常用指令
  • Linux命令使用记录(自用)
  • 深度解析Qwen3:性能实测对标Gemini 2.5 Pro?开源大模型新标杆的部署挑战与机遇
  • 蔡澜回应“入ICU观察”称未至于病危,助理:只是老毛病
  • 华侨城A:一季度营收53.63亿元,净利润亏损14.19亿元
  • 流浪猫给车主造成困扰,长春一小区拟投药应对?律师:此举欠妥
  • 上海乐高乐园建设进入最后冲刺,开园限量纪念年卡将于5月开售
  • 下任美联储主席热门人选沃什:美联储犯下“系统性错误”,未能控制一代人以来最严重的通胀
  • “五一”前多地市监部门告诫经营者:对预订客房不得毁约提价