这个是怎么发现的呢,虽然没有引发OOM,但是自从我接手这个项目以后,前期都是改bug,写新需求,最近疫情在家,并且新做的小程序等待审核的期间,发现了个线上问题;发现每隔一段时间,一般是一两周,线上的堆内存就逐渐增大,虽然很缓慢的增长,但是使用jmap -heap命令查看到老年代也是越来越大,以往的gc没有起作用,正常来说内存占用应该是从部署逐步上升到保持一个稳定的水平。
1.使用命令获取jvm内存dump:
jmap -dump:format=b,file=10339.hprof 10339
2.使用工具自动分析大概率有问题的内存占用线程及实例:
大概看到了是这个DIsposer中的Hashtable占用了很大的内存;
3.查看按照内存占用降序的实例数: