码迷,mamicode.com
首页 > 其他好文 > 详细

调用阿里云OSS未释放资源造成的内存溢出

时间:2019-11-30 13:29:38      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:调用   bsp   分析工具   dump   EAP   公司   mem   jvm   lin   

 

前段时间线上服务频繁出现内存溢出的问题,有时候半夜就会挂掉,运维同事还得从睡梦中爬起来重启,给我们带来很大的困扰。一次运维同事在快到挂掉前把jvm 的heap dump拿了下来给了我们,通过内存分析工具 MemoryAnalyzer 打开看到结果如下

技术图片

 

可以看到有大量的org.apache.http.impl.conn.PoolingHttpClientConnectionManager 对象未被释放 ,并且可以看到是 阿里云的 oss 在引用的,灵机一动,可能是访问oss服务的时候某些资源没被释放,

但是oss的类库是公司的另一部门封装的,我们产品是直接拿来用的,那就去看看他们的源码吧。

经过查看源码发现,在每一次的oss请求都会创建一个阿里云的 OSSClient实例 ,在调用ossClient接口请求完之后并没有调用OSSClient的shutdown()方法释放资源。怪不得运行几天后内存过高不行的fullGC 直至内存溢出。反馈给另一部门之后改完我们重新打包发版,

运行观察了一段时间,再没有出现内存溢出了。真好。

 

调用阿里云OSS未释放资源造成的内存溢出

标签:调用   bsp   分析工具   dump   EAP   公司   mem   jvm   lin   

原文地址:https://www.cnblogs.com/jasonChai/p/11961839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!