公司的一个服务运行一段时间就会内存居高不下,刚开始并没有留意都是选择重启大法。正好这些日子闲了一点刚好又发生了就想这好好解决下。
因为公司将服务是放在docker容器里的
docker exec -it tomcat_web /bin/bash
输入top查看具体进程号
导出堆内存文件,复制到宿主机下载到本地
jmap -dump:format=b,file=webDump.hprof 1
使用内存分析工具
下载连接
Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation
第一给我看蒙了 不知道啥东西占了一半的内存,点进去打开一看是一个操作pdf的开源类产生的。
下面这篇文章解决了我的疑惑。
(3条消息) java lang r,内存泄漏?为什么java.lang.ref.Finalizer吃了这么多内存_weixin_39618176的博客-CSDN博客