线上问题——频繁 Full GC 问题的排查思路

记一次频繁fullgc排查到解决全流程复盘 阿里云oss文件上传导致的频繁fullgc问题排查到解决全流程复盘 阅读详情
AI摘要

本文围绕线上频繁 Full GC 问题展开,介绍了排查思路。先查看 GC 日志分析频率和原因,再用工具分析内存泄漏,检查对象生命周期,优化代码,调整垃圾回收策略,最后使用监控工具实时监控和分析数据,以解决 Full GC 频繁问题。

一、查看 GC 日志

  1. 启用 GC 日志

    • 在 Java 应用中,需要在启动参数中添加适当的参数来启用 GC 日志记录。可以使用-XX:+PrintGCDetails、-XX:+PrintGCDateStamps、-Xloggc:<log - path>参数。其中 -XX:+PrintGCDetails 会打印详细的 GC 信息,-XX:+PrintGCDateStamps会打印 GC 发生的时间戳,-Xloggc:<log - path>指定了 GC 日志的输出路径。
  2. 分析 GC 日志内容

    • Full GC 频率:查看 GC 日志中 Full GC 发生的频率。如果 Full GC 过于频繁(例如,每分钟多次),则需要深入分析。
    • Full GC 原因:
      • 内存不足(Heap Space):如果日志中显示java.lang.OutOfMemoryError: Java heap space,说明应用程序创建的对象太多,导致堆内存不够用,从而触发 Full GC。
      • 永久代 / 元空间(Permanent Generation / Metaspace)溢出:在旧版本的 Java 中,可能会出现java.lang.OutOfMemoryError: PermGen space,在 Java 8 及以后可能会出现java.lang.OutOfMemoryError: Metaspace。这表示类加载过多或者存在类加载器泄漏等问题,导致永久代或元空间被耗尽。
      • System.gc () 调用:如果在日志中发现有Full GC(System),说明应用程序中显式调用了System.gc()方法。虽然在现代 JVM 中,System.gc()的调用不一定会立即触发 Full GC,但如果频繁调用,可能会导致 Full GC 频繁发生。
Full GC 排查的方式有哪些? Full GC(Full Garbage Collection) 是 Java 虚拟机(JVM)中的一种垃圾回收机制,它会清理整个堆内存(包括新生代和老年代),通常会导致应用程序暂停(Stop-The-World)。Full GC 的频繁发生会严重影响系统性能,因此需要及时排查和优化。以下是排查 Full GC 的常见方式:使用监控工具可以实时观察 JVM 的内存使用情况和 GC 行为。jstat: 关键指标: :Full GC 次数。 :Full GC 总耗时。 :GC 总耗时。 jmap: 阅读详情

相关推荐

线上服务器一小时一次fullGc排查

现状: -Xms:8G -Xmx:8G -Xmn:2G 下面是gc日志输出的配置: CommandLine flags: -XX:CMSInitiatingOccupancyFraction=75 -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/logs/Heap...

不良IP的博客 844

纯干货:线上出现fullGC次数很多的排查思路以及实践总结

最近线上发布了一个版本,导致full gc次数忽然就上去了,虽然对线上业务造成的影响还不是很大,但是为了以防万一还是对这个问题做了相关排查。 GC命令排查 一开始还是从堆的变化开始: # 查看每秒的堆发生的变化以及gc的次数 jstat -gcutil pid 1000 相关参数: s0 : Heap上的 Survivor space 0 区已使用空间的百分比 s1 : Heap上的 S...

长沙要起风了、 7385

RK3576的ISP和VPSS图像处理能力实测:对比海思方案能做什么?

本文深度评测了RK3576芯片的ISP和VPSS图像处理能力,并与海思方案进行对比。测试显示,RK3576在MIPI接口灵活性、多路视频支持、HDR动态范围和降噪效果等方面表现优异,特别适合智能视觉和安防监控应用。通过实测数据展示了其在低照度、高动态范围等复杂场景下的卓越性能。

weixin_42713608的博客 262

Unity3D Lua与C#的相互调用与性能剖析详解

在游戏开发中,经常会遇到Lua与C#之间的相互调用的情况。本文将详细介绍Unity3D中Lua与C#的相互调用的方式,并对其性能进行剖析。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!一、Lua与C#的相互调用方式Lua调用C#在Unity3D中,可以通过Lua调用C#的方式来实现Lua与C#的相互调用。具体步骤如下:(1)首先需要在Unity3D项目中导入Lua的相关库,例如tolua或者xlua。

weixin_49669470的博客 1215

Cadence DSP 算子开发实战:从入门到精通

本文详细介绍了Cadence DSP算子开发的实战技巧,从入门基础到高级优化。内容涵盖DSP架构特性、内存管理、分块计算策略、SIMD指令优化等核心知识,并提供了性能调优和调试的实用技巧,帮助开发者快速掌握Cadence DSP开发精髓,提升图像处理等计算密集型任务的开发效率。

weixin_29278805的博客 435

西电计组实验一 存储器实验

计组实验报告 实验一 存储器实验——FPGA中LPM_ROM定制与读出实验 一.实验目的   1.掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性和配置方法;   2.用文本编辑器编辑mif文件配置ROM,学习将程序代码以mif格式文件加载于lpm_ROM中;   3.在初始化存储器编辑窗口编辑mif文件配置ROM;   4.验证FPGA中mega_lpm_ROM的功能。 二.实验原理   ALTERA的FPGA中有许多可调用的LPM (Library Parameterized Modu

Polaris的博客 1万+

数字人(对嘴型 Lip-sync)数据集 LRS2 介绍(含网盘链接)

LRS2(Lip Reading Sentences 2)是牛津大学与BBC合作开发的一个大规模唇语识别数据集,专门用于训练和评估数字人唇语同步(Lip-sync)技术。该数据集包含数千条来自BBC电视节目的口语句子,每个句子长度最多100个字符。官方网站为:https://www.robots.ox.ac.uk/~vgg/data/lip_reading/lrs2.html可惜需要认证,不过我已经下载好并存到网盘里了,有需要可适用如下链接下载。(仅供学习,请勿传播)

iioSnail的博客 1685

网络变更:APIC 节点替换

Fabric Name,Controller ID,TEP Address Pool 等信息必须相同;如果故障设备是 APIC1 还需要重新配置管理密码。此过程可能需要 10 分钟左右,在此期间目标 APIC 可能在 Available/Unavailable 状态翻滚。APIC 获取 TEP 地址后,进入 fully-fit。通过 CLI 以及配置的密码登录目标 APIC。

m0_54931486的博客 321

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 406

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 551

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: MySQL——MySQL 日志
下一篇: 算法——排序算法(冒泡、选择、归并、堆排序)
ShareBeHappy_Qin
博客等级 码龄9年 2321粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值