早上收到生产服务器JVM堆内存占用率达到80%的邮件报警,来到公司用Java VisualVM分析。


从图上可以看到有个idle_connection_reaper的线程占用内存达到79%
然后我们dump下hprof文件分析看看

这个线程应该跟阿里云oss代码相关


用MemoryAnalyzer工具再次分析一下hprof文件

这个org.apache.http.impl.conn.PoolingHttpClientConnectionManager实例占用过多的内存
从com.aliyun.oss.ClientBuilderConfiguration可以判断跟oss连接有关,找了oss相关的连接代码
果然开发在new OSSClient的时候,没有调用ossClient.shutdown,造成内存泄漏