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

[每日一氵] PySpark 的 log GC 部分是什么意思

2024-11-15T11:10:40.292+0800: 2850.503: [GC (Allocation Failure) [PSYoungGen: 142705K->3472K(141312K)] 1403514K->1264289K(1543168K), 0.0170225 secs] [Times: user=0.05 sys=0.00, real=0.01 secs] 

这一行日志来自Java的垃圾收集器(Garbage Collector, GC),并且是在使用Spark时产生的。下面会逐一解释这一行日志中的各个部分:

  1. 时间戳:2024-11-15T11:10:40.292+0800
    这表示垃圾收集事件发生在2024年11月15日,时间是11:10:40.292,时区是+0800(即东八区,通常是中国、台湾、香港、澳门等地的时区)。

  2. GC事件:2850.503: [GC (Allocation Failure)
    2850.503:这是Java虚拟机(JVM)启动后的秒数,表示从JVM启动到这次GC事件发生已经过去了大约2850.503秒。
    [GC (Allocation Failure):这表示发生了一次GC事件,原因是“分配失败”(Allocation Failure),即JVM在尝试为新对象分配内存时,发现没有足够的空间,从而触发了垃圾收集。
    内存变化:[PSYoungGen: 142705K->3472K(141312K)] 1403514K->1264289K(1543168K)
    PSYoungGen: 这是指“Parallel Scavenge Young Generation”,是Java堆内存中的年轻代部分。年轻代通常包含新创建的对象。
    142705K->3472K(141312K): 这表示在GC之前,年轻代使用了142705K的内存,GC之后减少到了3472K。年轻代的总容量是141312K。
    1403514K->1264289K(1543168K): 这表示整个Java堆在GC之前使用了1403514K的内存,GC之后减少到了1264289K。整个堆的总容量是1543168K。
    耗时:0.0170225 secs

  3. 这表示这次GC事件总共耗费了 0.0170225 秒。
    时间细节:[Times: user=0.05 sys=0.00, real=0.01 secs]
    user=0.05: 这表示在用户模式下(即执行Java代码时)耗费了0.05秒。
    sys=0.00: 这表示在系统模式下(即执行操作系统代码,如垃圾收集器本身)耗费了0.00秒。
    real=0.01: 这表示从GC事件开始到结束实际经过的时间是0.01秒,这通常包括了等待时间和其他非计算开销。

2024-11-15T10:59:09.768+0800: 2159.978: [Full GC (Ergonomics) [PSYoungGen: 1952K->0K(123904K)] [ParOldGen: 1196156K->1165762K(1401856K)] 1198108K->1165762K(1525760K), [Metaspace: 161537K->161537K(1202176K)], 2.0533133 secs] 
[Times: user=7.57 sys=0.01, real=2.05 secs]
  • 时间戳: 2024-11-15T10:59:09.768+0800,发生在2024年11月15日 10:59:09。

  • GC类型: Full GC,表示发生了全局垃圾收集,这通常涉及到整个堆的清理。

  • 触发原因: (Ergonomics),表明垃圾收集是基于JVM的自动调整策略触发的。

  • 内存变化:

    • PSYoungGen: 年轻代从1952K清理到0K。
    • ParOldGen: 老年代从1196156K减少到1165762K。
    • 总堆内存: 从1198108K减少到1165762K。
    • Metaspace: 元空间大小未变,保持在161537K。
    • 耗时: 2.0533133 secs,表明Full GC花费了大约2.05秒。
  • 时间细节: 用户模式7.57秒,系统模式0.01秒,实际耗时2.05秒。这里的用户模式时间远大于实际耗时,可能是因为GC过程中多个线程并行工作。

2024-11-15T10:54:06.273+0800: 1856.484: [Full GC (System.gc()) [PSYoungGen: 2368K->0K(389632K)] [ParOldGen: 1052564K->1035143K(1197056K)] 1054932K->1035143K(1586688K), [Metaspace: 161469K->161469K(1202176K)], 2.7494377 secs] [Times: user=9.01 sys=0.03, real=2.75 secs]
  • 时间戳: 2024-11-15T10:54:06.273+0800,发生在2024年11月15日 10:54:06。
  • GC类型: Full GC,同样是全局垃圾收集。
  • 触发原因: (System.gc()),表明垃圾收集是由System.gc()调用触发的,这通常是由应用程序或开发者显式调用的。
  • 内存变化:
    • PSYoungGen: 年轻代从2368K清理到0K。
    • ParOldGen: 老年代从1052564K减少到1035143K。
    • 总堆内存: 从1054932K减少到1035143K。
    • Metaspace: 元空间大小未变,保持在161469K。
    • 耗时: 2.7494377 secs,Full GC花费了大约2.75秒。
  • 时间细节: 用户模式9.01秒,系统模式0.03秒,实际耗时2.75秒。这里的用户模式时间也远大于实际耗时。
2024-11-15T10:24:30.644+0800: 80.855: [GC (Metadata GC Threshold) [PSYoungGen: 87878K->7167K(194048K)] 115047K->44846K(422400K), 0.0238500 secs] [Times: user=0.08 sys=0.01, real=0.02 secs]
  • 时间戳: 2024-11-15T10:24:30.644+0800,发生在2024年11月15日 10:24:30。
  • GC类型: GC,这表明不是Full GC,可能是针对年轻代的垃圾收集。
  • 触发原因: (Metadata GC Threshold),表明垃圾收集是由于元空间使用达到了某个阈值而触发的。
  • 内存变化:
    • PSYoungGen: 年轻代从87878K减少到7167K。
    • 总堆内存: 从115047K减少到44846K(这里没有明确给出老年代的变化)。
    • 耗时: 0.0238500 secs,这次GC事件非常快,仅耗时约0.02秒。
  • 时间细节: 用户模式0.08秒,系统模式0.01秒,实际耗时0.02秒。这里的用户模式时间和实际耗时比较接近。

http://www.kler.cn/a/394476.html

相关文章:

  • 密码学期末考试笔记
  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • 基于MindSpore NLP的PEFT微调
  • Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • MFC用List Control 和Picture控件实现界面切换效果
  • 项目中如何排查JVM问题?
  • 控制中心应该如何选择控制台
  • LeetCode题解:5.最长回文子串【Python题解超详细,中心拓展、动态规划、暴力解法】
  • WPF Prism中的区域(Region)管理
  • 腾讯云双11最强攻略:如何选购优惠产品,薅最划算的羊毛
  • ssm117网络教学平台的设计与实现+vue(论文+源码)_kaic
  • 安卓aab包的安装教程,附带adb环境的配置
  • 电脑局域网内让其他电脑通过IP访问配置
  • ssh远程连接和nfs共享文件系统
  • 不安全 Rust
  • Linux 抓包工具 --- tcpdump
  • 安全见闻六:通讯协议安全问题剖析
  • Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)
  • jdk8 有哪些新特性?
  • 用 Python 从零开始创建神经网络(六):优化(Optimization)介绍
  • 【数字图像处理+MATLAB】将图像转换为二值图像(Binary Image):使用 imbinarize 函数进行二值化运算(Binarize)
  • 算法--解决熄灯问题
  • libigl 基于射线选择面片
  • 从JVM的角度,来分析为什么Java中是值传递?
  • 小程序服务商常见问题
  • 公共检查点(checkpoints)+探针(Probe)详解