fullGC过于频繁的原因和解决方案

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


案例1 
系统高峰期fullGC频繁,优化后恢复正常。 
导致原因: 
系统中有一个调用频繁的接口会调用下面这个方法,目的是获取图片的宽高信息,但是Image这个对象用完不会自动释放,需要手动调用 flush()方法;以前没有调用这个方法,就导致一有请求就会有大对象进入old区,在业务高峰期old区一会就被打满,所以一直进行fgc。

public static Image getImage(String path) { 
    ImageIcon icon = new ImageIcon(path); 
    Image img = icon.getImage(); 
    return img; 
}
  • 1
  • 2
  • 3
  • 4
  • 5

解决办法: 
其实不管是用Image还是BufferedImage,读取图片的宽高不用把图片全部加载到内存,在图片的宽高信息其实是存储在文件头中的,只 要按不同的格式读取文件的头信息就可以拿到宽高信息 
使用ImageReader代码如下

Iterator readers = ImageIO.getImageReadersByFormatName(StringUtil.getFileSuffix(filePath)); 
ImageReader reader = (ImageReader)readers.next(); 
iis = ImageIO.createImageInputStream(is); 
reader.setInput(iis, true); 
return Pair.of(reader.getWidth(0),reader.getHeight(0));
  • 1
  • 2
  • 3
  • 4
  • 5

参考博文:http://itindex.net/detail/53283-%E7%B3%BB%E7%BB%9F-full-gc

记一次生产频繁发生FullGC问题 因为最近这个接口调用量是翻倍了,所以我就去检查了下慢SQL,发现确实是有较多的慢SQL,所以我就缩减了查询的时间范围,但是效果并不好。经过上面问题的排查,造成hooks大对象的原因找到了,就是每次调用接口的时候,都会往hooks里面put一个对象。过了一会发现,这个服务fullGC是有问题的,太频繁了,这个应该是导致接口超时的根本问题,因为时间也是对的上的。对比一下,就不难发现,fullGC数量是从3月15号晚上9点开始增加的,也是这个接口对外开放的时间。2、根据dump文件,分析出堆内对象的分布情况。 阅读详情

相关推荐

记一次线上FullGC问题排查

问题起因 2022-03-13在钉钉工作通知中收到申请其中一台机器的预警。预警信息显示FullGC的次数持续超过指定的阈值。 我们知道FullGC非常耗时。当一个GC线程执行FullGC时,会严重影响其他线程的正常工作,造成系统卡顿的现象。通常情况下,它被认为可以停止这个世界。 所以这台机器果断重启,但是没过多久,其他机器就开始陆续报出FullGC警告。实在没办法,于是重启了整个应用,重启后应用运行恢复正常。虽然暂时恢复正常了,但不能保证以后不会再出问题,所以要追根溯源,从根源上解决问题。 .

weixin_39658449的博客 870

BufferedImage释放问题

BufferedImage b1 = new … 使用完后: b1 = null 这样,JVM 就会知道 b1 的内存可以回收了。 当 jvm 知道 b1 = null 的时候,需要等到 jvm 本身运行 System.gc() 的时候,才会真正对 b1 产生出的内存进行回收。 如果你需要强制 jvm 立即进行内存回收,这个时候,你就需要手工在 b1 = null; System.gc(); 代码中直接加上 gc() 的调用。 但是,需要注意的是 System.gc() 回收的是对整个系统可以回收的对象收集

MD_MushRoom的博客 5514

人形机器人人机交互解决方案(2026完整版)

《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑

随读手记 776

严重Full GC问题

综上所述,针对Full GC导致系统卡死的问题,需要综合考虑堆内存大小、内存泄漏、大对象处理、Finalizer的使用以及并发线程数等因素,通过优化配置和代码改进,来降低Full GC的频率和影响,提高系统的稳定性和性能。内存泄漏:Full GC通常是在老年代进行的,如果应用程序存在内存泄漏问题,老年代的对象会持续增加,导致Full GC的时间越来越长,最终引发系统卡死。优化大对象的处理:对于频繁创建的大对象,可以考虑使用对象池或者重用对象,以减少Full GC的负担。

kankan_s的专栏 1739

五段式S型算法笔记

又因为有 v-v0= 0.5jt通式: 所以有 vm-v0= 0.5jtm 所以有4vm-4v0= 2jtm。算法1: v=2vm-v0-0.5*jt+2jt*tm-2jtm*tm。加加速度j 自己设置 已知,vmax自己设置已知;所以有4vm-4v0= 2jtm带入算法1。

qq_36658033的博客 683

Abaqus SIGTERM/SIGINT中断问题深度解析与实战解决方案

本文深度解析Abaqus仿真计算中因SIGTERM或SIGINT信号导致作业意外终止的常见问题。核心原因常为许可证管理器因网络通信延迟误判进程空闲而强制断开,或系统资源监控工具的误杀。文章提供了从命令行参数调优(如使用int、ask_delete=OFF)、计算环境隔离到编写自动化容错脚本的完整实战解决方案,帮助用户彻底规避此类中断,确保长时间仿真任务的稳定运行。

weixin_29279101的博客 415

full gc过于频繁该怎么解决

full gc过于频繁该怎么解决

泡^泡 5390

STM32CubeMX+Keil5新建工程

STM32CubeMX+Keil5新建工程

xu96944967的博客 3371

Parallel Collector 频繁 Full GC 解决

Parallel Collector 频繁 Full GC 解决

weixin_44981707的博客 872

【没有网络,安装python包】如何从 PyPI 下载并安装 Plotly 的离线包

在某些情况下,您可能需要在没有互联网连接的环境中安装 Python 包,例如在飞机上、在某些受限制的网络环境中或在需要离线安装的场景下。以下是如何在 PyPI(Python Package Index)下载 Plotly 包并进行离线安装的详细步骤。

赖德发的博客 1105

【DeepSeek开发入门】DeepSeek API 开发初体验

在人工智能蓬勃发展的时代,DeepSeek作为一款功能强大的AI大模型,为开发者提供了丰富的接口和便捷的开发体验。本文将基于DeepSeek的几个关键接口,带你快速入门,开启DeepSeek开发的探索之旅。通过本文,你已经初步了解了DeepSeek开发中几个重要接口的使用方法,包括列出模型、对话补全和查询余额接口,以及开发过程中的常见问题及解决办法。这是你踏入DeepSeek开发领域的第一步。在后续的学习中,你可以深入研究模型的参数调优,探索不同模型在各种场景下的应用,如利用模型实现更复杂的推理对话功能。

寻道AI,探索AI无限可能! 2764

频繁FullGC

1 原因 原因一:系统承载高并发请求,或者处理数据量过大,导致Young GC很贫乏,而且每次Young GC过后存活对象太多,内存分配不合理,Survivor区过小,导致对象频繁进入老年代,频繁触发Full GC。 原因二:系统一次性加载过多数据进内存,搞出来很多大对象,导致频繁有大对象进入老年带,必然频繁触发Full GC。 原因三:系统发生了内存泄漏,莫名其妙创建大量的对象,始终无法回收,一直占用在老年代里,必然频繁触发Full GC。 原因四:Metaspace(永久代)因为加载类过多触发Full

kking_edc的博客 1886

自抗扰控制(ADRC)理论与工程实践:8.1 自适应ADRC与参数在线整定

自适应自抗扰控制(AADRC)针对传统固定参数ADRC在动态变化系统中的局限性,提出通过在线调整关键参数(如观测器带宽ω₀、控制器带宽ω_c)以适应对象动态变化。主要方法包括基于稳定性理论的自适应律设计和基于性能指标的优化调节,前者保证闭环稳定但设计复杂,后者通过梯度搜索或模糊规则实现性能优化但缺乏严格稳定性证明。当前挑战在于非线性时变系统的稳定性分析、参数变化速率限制及工程实现的计算负担。AADRC拓展了ADRC在变参数系统(如无人机、软体机器人)中的应用,是迈向自主智能控制的关键技术。

技术工作者 217

频繁FullGc排查思路

JVM GC FullGc 垃圾回收 分析 定位

fuliyingIT的博客 1396

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

疑难杂症(一) MyBatis批量插入导致系统频繁FullGC

疑难杂症(一) MyBatis批量插入导致系统频繁FullGC 现象 服务运行一段时候,无法正常接收请求和响应消息。重启后系统正常运行。隔了几天后,再次出现系统假死,无法响应请求的情况。 排查 1.利用jstat命令查看gc情况 ​ JVM几乎每秒就要进行1到2次fullGC,这么夸张的GC频率,服务直接进入假死状态,无法正常运作。那么,是什么造成立这么频繁的fullGC呢? 2.jmap导出dump文件,利用jvisualvm进行进一步分析 ​ 可以看到,char[]类型的实例占据了接近700M的内存

u013600738的博客 1612

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java堆内存富余却疯狂FullGc问题排查

刚上线了一个新的应用集群,第二天和第三天收到了应用FullGc超过阈值的报警短信。但是观察报警Java实例的jvm监控,堆内存仅仅用了1G多一点,还富余近700M。很困惑,剩余这么多内存没被使用,那么说明老年代内存是充足的才对啊!     同事提醒我是不是申请了什么大对象,诚然,老年代只会有两种类型的对象,1,多次Minor Gc中存活的小对象,2,大对象,即超过了PretenureSize

马万明的专栏 2742

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JVM频繁FullGC导致系统卡顿?这篇文章教你3步搞定!

FullGC其实就是JVM的垃圾回收器对整个堆内存进行一次全面的垃圾回收。回收范围大:会回收年轻代、老年代甚至永久代(或元空间)的垃圾执行时间长:通常需要几十毫秒甚至几秒会暂停应用:在FullGC期间,所有的应用线程都会被暂停(也就是所谓的"STW" - Stop The World)想象一下:你正在高速公路上开车,突然前面的路被封闭了,所有车辆都得停下来等。这时候后面的车越堵越多,用户的体验就会越来越差。FullGC就像这个封路的过程,虽然是为了清理道路(回收内存),但过程中会导致系统卡顿。

我爱娃哈哈的专栏 786

线上频繁FullGC?慌得一比!竟是Log4j2的这个“特性”坑了我

摘要:本文记录了一次线上频繁FullGC问题的排查过程。系统因引入Servlet依赖导致Log4j2误判为Web应用,禁用线程缓存功能,每次日志打印都创建2MB+大对象。配合JVM参数-XX:PretenureSizeThreshold=2097152,这些对象直接进入老年代,引发频繁FullGC。通过分析GC日志、内存Dump和源码,最终定位问题根源并给出解决方案:调整Log4j2配置和优化JVM参数。文章详细阐述了排查思路、技术原理及修复方案,对类似问题具有参考价值。

weixin_55010563的博客 452

又是一个程序员粗心的代码引起频繁FullGC的案例

这是笨神JVMPocket群里一位名为"云何*住"的同学提出来的问题,问题现象是CPU飙高并且频繁FullGC。 重现问题 这位同学的业务代码比较复杂,为了简化业务场景,笔者将其代码压缩成如下的代码片段:   public class FullGCDemo {   private static ScheduledThreadPoolExecutor executor =...

weixin_40581617的博客 265

频繁GC问题

原文地址:http://caogen81.iteye.com/blog/1513345       我们的Java应用因频繁FULL GC导致性能降低很多,经过多人的定位也没有结论,于是我自主请命,经过一天的研究终于搞定了,现把经验与大家共享,相关的gc日志如下: 4.758: [Full GC [PSYoungGen: 464K->0K(71936K)] [PSOldGen: 379

杨春建的博客 5876

一次让人难以忘怀的排查频繁Full GC过程

我们的Java应用因频繁FULL GC导致性能降低很多,相关的gc日志如下: 4.758: [Full GC [PSYoungGen: 464K->0K(71936K)] [PSOldGen: 37949K->33994K(68672K)] 38413K->33994K(140608K) [PSPermGen: 33221K->33221K(66560K)], 0.18...

word5的博客 289

Full GC有关问题学习分析(转载)

网站持久代引发Full GC问题分析 现状: Dragoon(监控系统)的日报显示trade_us_wholelsale(美国wholesale集群),日均Young GC次数25w次左右,应用暂停295w毫秒(相当于40多分钟),Full GC次数600次左右,应用暂停190w毫秒(相当于30多分钟)。 GC,尤其是Full GC,每次都会导致JVM暂停工作,处理垃圾回收任务,短时间内...

weixin_34234829的博客 84
上一篇: JVM频繁Full GC的情况及应对策略
下一篇: JVM启动参数推荐
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值