通过《jvm线上实现(1)》定位到问题的所在,为了更近一步的定位错误信息,dump当前java进程堆信息
加载当前的堆信息:jmap -dump:live,format=b,file=dump.hprof 5511
通过 Eclipse IDE MAT 插件进行堆分析
Java堆分析:
Eclipse 导入堆信息
1. 查看当前堆内存泄漏情况
堆的对象泄漏可以分析出,当前堆中存在大量的:”io.netty.util.internal.InternalThreadLocalMap“这个是netty的内部线程
2.查看当前堆中占用最大的对象
通过对堆的对象分析,可以发现,当前系统中大量存在连接池对象,从而定位到问题所在,连接池出现了泄漏。导致系统大量创建连接池,而没有释放。出现了内存泄漏
通过堆信息分析,找到了问题所在,修改可能出现问题的代码,做到了jvm的全面诊断。