内存分析工具之Mat

自定义类MatClazz内存个数为9521。当前对象占用内存为16个字节。不包括其属性bytes的字节数。
内存分析工具之Mat_第1张图片
通过查看MatClazz引用的类之byte数组之bytes。其单个数组占用的字节数为10256。整个内存MatClazz中属性bytes占用的byte[]字节数为97746376,与直方图统计趋近。
内存分析工具之Mat_第2张图片
通过选项 最短GC Roots路径查看得知,此次内存溢出是由线程栈中局部变量等对象未释放导致的。
内存分析工具之Mat_第3张图片
当前线程栈直接引用的对象为ArrayList,其中ArrayList中元素MatClazz等引用没有释放导致GC 无法释放。

2.线上由于OSS引发的内存溢出

背景:最近预发刷一批图片,由于OSS客户端没有使用单例,而是独立new方式创建导致连接没有显式关闭出现了内存溢出。
内存分析工具之Mat_第4张图片

解决方式:直接通过如下选项,
内存分析工具之Mat_第5张图片
快速定位出HashMap耗内存的原因:如图所示oss相关连接引发的GC ROOT引用链无法释放导致的。
内存分析工具之Mat_第6张图片

Mat工具使用参开

你可能感兴趣的:(java,jvm,开发语言)