这里存在一条清晰的引用关系,查看MeterRegistry源码,有一个ConcurrentHashMap全局变量
就是这个全局的Hashmap保存了到ImmutableTag的引用关系,导致GC Roots判定引用路径存在,对象存活无法回收.关键代码:
文章插图
这里判定如果meterMap中不存在mappedId就创建,mappedId是一个DefaultMeter对象,针对我们的业务场景,这个Meter根据Route对象生成.看一下我们的使用方法,为了做到动态路由效果,我们使用了一个全局的filter拦截请求,然后根据算法确定需要转发的目标IP,每次请求都会生成一个新的Route对象
文章插图
3.2 水落石出
坏就坏在这个newRoute上,因为每次请求的参数不一样,导致我们生成的Route对象也不一样.我们认为Route是请求级别的动态的,每次请求后自然消亡,实际上也是如此.但是万万没想到,站在SpringCloud GateWay或者说站在GatewayMetricsFilter的视角,这个Route是全局的静态,由此引发内存泄漏.
四 经验总结
第一, 要有性能意识,量变引起质变,简单如一行日志都会在高并发的情况引发一起血案,考验着研发的技术功底.
第二,工欲善其事,必先利其器,一款好的工具能够极大提升研发生产力
推荐阅读
- 消炎药吃完后在体内存留多长时间?
- 吴彦祖|网友晒吴彦祖理发视频,五官精致如年轻时一样帅气,发际线上移额头好大
- 董卿|48岁董卿久违露面,发际线上移脑门锃亮,下巴尖锐脸变僵硬仍优雅
- 无线上los闪红灯是怎么了?无线网络los闪红灯_2
- 微信|微信太“吃”内存了?3个方法快速给微信“瘦身”,释放内存!
- 华晨宇|华晨宇学刘德华开线上演唱会,超2亿人在线观看,差的还是有点多
- 刘德华|文旅部要求刘德华、周华健、华晨宇线上演唱会需要获取经营许可证
- 如何线上预约办理健康证? 健康证在哪里办
- 华晨宇|华晨宇线上演唱会人数仅输刘德华,网友评唱功一般,但音响效果牛
- 无线上los闪红灯是怎么了-无线los闪红灯是什么意思-