Hutool:WeakCache导致的内存泄漏

news2025/1/18 6:51:20

闲聊

感谢各位居然有生之年上了一次榜单。没想到一次bug定位这么火,身为电商网站的后台开发,别的不敢说,jvm调优啊,bug定位啊,sql调优啊简直是家(ri)常(chang)便(chan)饭(shi)。后续也会努力给大家带来更多文章的

就在上面文章发了没几天,生产又出问题了,一台服务cpu使用率飙到20%以上

查看gc日志发现,fullgc频繁,通过jstat排查,并没有释放多少内存【当时我再外面没有图】

通过分析,是hutool的WeakCache导致的,涉及业务逻辑修改,就不透露解决方案了,下面为大家分析下为啥会内存泄漏。

问题分析

WeakHashMap

「前置知识」之前写过一篇强软弱虚分析,感兴趣的可以点击看下。

我粗略的看了下,介不是弱引用吗,怎么会内存泄漏呢

「启动参数设置」-Xms50m -Xmx50m -XX:+PrintGCDetails不嫌麻烦可以调大一点

这个是没问题的,不会发生OOM

WeakCache

下面有请下一位参赛选手WeakCache

凭借我一次次手点,发现,根本不回收,cacheMap不也是WeakHashMap咋不回收呢

搜了下issue,果然有人提过了,

「原文链接」 https://gitee.com/dromara/hutool/issues/I51O7M

那么我们来实验下,把CacheObj拷贝出来,强制走我的

问题得到了解决,dalao牛逼

既然不会删除,那是什么时候删除的呢?

是类似于懒删。


彩蛋

那么这行代码是怎么存在这么久而不出问题的

不在那天爬的紫金山=。=

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/926271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode——二叉树篇(九)

刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 669. 修剪二叉搜索树 108. 将有序数组转换为二叉搜索树 538. 把二叉搜索树转换为累加树 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界…

用好「留存」,闭环小程序运营链路

如何通过线上小程序获取用户线索,提高企业抗风险能力,建立有效的营销数字化系统一直是困扰每一个小程序开发者与运营者的问题。 当我们选择使用小程序设计自己的运营流程时,从「推广」到「转化」,再到最终的「留存」都是运营过程…

leetcode 1035. 不相交的线

2023.8.25 本题可以转化为&#xff1a;求两数组的最长公共子序列。 进而可以用dp算法解决。 方法类似于这题最长公共子序列 。 代码如下&#xff1a; class Solution { public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {vector<…

汽车电子笔记之:AUTOSA架构下的多核OS操作系统

目录 1、AUTOSAR多核操作系统 1.1、OS Application 1.2、多核OS的软件分区 1.3、任务调度 1.4、核间任务同步 1.5、计数器、报警器、调度表 1.6、自旋锁与共享资源 1.7、核间通信IOC 1.8、OS Object中元素交互 1.9、多核OS的启动与关闭 2、多核OS注意事项 2.1、最小…

Classic AUTOSAR专题| 诊断模块(上)

往期小怿向各位小伙伴介绍了Classic AUTOSAR专题之I/O模块&#xff0c;相信看过的小伙伴对Classic AUTOSAR的I/O模块已经有基本的认知了&#xff0c;本期为大家介绍《AUTOSAR模块之诊断模块》&#xff0c;内容超丰富&#xff0c;将分两期推出哦。 目录 1.概述 2.DCM 3.DEM …

upgrade pip报错:def read(rel_path: str) -> str: syntaxerror

命令行执行以下命令就可以大功告成! wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py pip install --upgrade setuptools最后大功告成:

微信小程序基于移动端的个人博客系统的设计与实现

博客系统是能够让网民记录分享和学习的一个网站&#xff0c;在博客中我们可以发表文章对感兴趣的事情进行讨论。而基于移动端的个人博客系统的设计是就为了迎合广大用户需求创建的一个界面简洁、有定向内容、业务逻辑简单易操作的博客系统。本文以博客系统的设计与实现为例&…

【Axure教程】调用日期选择器并筛选中继器表格

今天教大家在Axure里怎么调用代码调用浏览器的日期选择器并对对中继器表格进行日期区间的筛选。调用浏览器日期选择器的好处是&#xff0c;可以选择真实的日期&#xff0c;包括某年某月某日是星期几&#xff0c;哪个二月是29天……都是真实的&#xff0c;那不同的浏览器日期选择…

腾讯云服务器多少钱一年?一个月或1小时费用价格明细表

腾讯云服务器租用费用表&#xff1a;轻量应用服务器2核2G4M带宽112元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、云服务器CVM S5实例2核2G配置280.8元一年、GPU服务器GN10Xp实例145元7天&#xff0c;腾讯云服务器网长期更新腾讯云轻量…

vs2017 错误 RC1015 cannot open include file ‘afxres.h‘.

问题场景&#xff1a; WINDOWS在VS2017环境下编译项目&#xff0c;报错vs2017 错误 RC1015 cannot open include file ‘afxres.h’. 问题排查&#xff1a; 首先&#xff0c;定位到include的文件目录&#xff0c;发现没有这个头文件&#xff1a; 解决方法&#xff1a; 第一种…

【java】【springboot】【idea】springboot项目pom.xml 灰色下划线

解决方案&#xff1a; 这里我们找到了原因&#xff0c;就是因为选择了Ignored Files导致pom.xml文件被设置在maven忽略文件清单中&#xff0c;所以我们将打勾的选项取消&#xff0c;点击Apply,然后点击OK

【精度丢失】后端接口返回的Long类型参数,不同浏览器解析出的结果不一样

1、业务背景 有个同事找我帮他看一个问题&#xff0c;他给前端提供了一个接口。 这个接口是用来反查id的&#xff0c;他这里这个参数正常的返回值应该是 283232039247028226。 但前端反馈他&#xff0c;前端在浏览器&#xff08;火狐&#xff09;获取的值是 283232039247028…

云上百世慧|公开研讨会|WMS仓储物流管理分享(我们在8月31日等你)

市场趋势 在新能源电池行业的迅猛发展中&#xff0c;新能源企业在仓储物流管理中可能面临一系列挑战和问题&#xff0c;这些问题可能因企业规模、产品类型、供应链结构等因素而有所不同。 主要问题包括&#xff1a;物料追溯困难、库存管理复杂、库存过剩或短缺、生产与库存耦…

长胜证券:沪指探底回升涨0.47%,券商、酿酒板块拉升,传媒板块活跃

24日早盘&#xff0c;沪指盘中震动回落&#xff0c;接近午盘快速拉升走高&#xff1b;深成指、创业板指强势上扬&#xff1b;北向资金今天转向&#xff0c;早盘积极出场&#xff0c;半日净买入近30亿元。 到午间收盘&#xff0c;沪指涨0.47%报3092.88点&#xff0c;深成指涨1.1…

Android 热修复核心原理

dexopt 在Dalvik中虚拟机在加载一个dex文件时&#xff0c;对 dex 文件 进行 验证 和 优化的操作&#xff0c;其对 dex 文件的优化结果变成了 odex(Optimized dex) 文件&#xff0c;这个文件和 dex 文件很像&#xff0c;只是使用了一些优化操作码。 dex2oat ART 预先编译机制&a…

Redis概述安装

Redis概述&安装 什么是RedisRedis的应用场景Redis安装Redis常用命令前台启动&#xff08;不推荐&#xff09;后台启动&#xff08;推荐&#xff09;客户端关闭Redis 什么是Redis Redis是用C语言开发的一个开源的高性能键值对&#xff08;key-value&#xff09;数据库&…

如何提高企业生产效率与安全性?设备报修管理系统有什么用?

随着现代工业技术的不断发展&#xff0c;企业生产设备变得越来越复杂&#xff0c;出现故障的可能性也随之增加。设备故障不仅会降低企业的生产效率&#xff0c;还可能导致生产安全事故的发生。为了更好地管理维护生产设备&#xff0c;提高生产效率和安全性&#xff0c;本文将向…

【Python Flask+Nginx】实现HTTP、WS (两步实现,简单易懂)

目录 一、创建Flask应用 二、部署Nginx 2.1 下载Nginx 2.2 修改Nginx配置文件 2.3 启动Nginx 三、测试 一、创建Flask应用 首先我写了如下一个基于Flask的Demo&#xff0c;该Demo包含两个接口一个是HTTP接口&#xff08;http://127.0.0.1:5000&#xff09;&#xff0c…

容器内执行命令

上篇文章向读者介绍了一个Nginx的例子&#xff0c;对于Nginx这样一个容器而言&#xff0c;当它启动成功后&#xff0c;我们不可避免的需要对Nginx进行的配置进行修改&#xff0c;那么这个修改要如何完成呢&#xff1f;且看下文。 依附容器 docker attach 依附容器这个主要是…

问道管理:年中业绩预报规则?

跟着市场经济的发展&#xff0c;成绩预告已经成为股市中最重要的信息之一。在股票投资范畴&#xff0c;咱们通常以为&#xff0c;股票价格受到市场供求关系的影响。供求关系取决于投资者对该股票的预期。因此&#xff0c;猜测股票价格要重视公司的成绩预告。 那么&#xff0c;年…