记一次Full GC问题的排查
今天看到监控平台显示项目的Full GC次数过多,查看了一下监控曲线,如下图,发现发生的时间点基本上都是在上午十点之后,到下午五点。
分析:考虑到业务形态,开始初步怀疑是访问人数增多引起的虚拟机内存不足,后来继续看监控指标找线索,发现如下图的监控曲线,当Young GC时,Old区的已使用空间并没有发生明显变化,而且剩余空间也非常大,所以通过这个分析发生Full GC的原因并不是虚拟机自动回收内存导致,很可能是在代码中存在System.gc(),所导致的Full GC。
在项目中搜索,发现jxl.jar中存在System.gc代码,这个jar的使用跟项目中需要进行Excel操作的需求有关,逐级跟踪到调用接口,找到调用接口之后,在监控平台上查看此接口的访问情况,发现确实是在发生Full GC时的时间点与接口访问的时间点相同,也就印证了我们的猜测。
解决:找到了问题之后,解决起来就相对简单了,经过查看源码发现,初始化Excel操作类时提供了两个构造函数,一般都是使用默认的,这次我们只需要把相关的配置参数传给构造函数就行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理