1. 发现cpu持续占用高,定位占用cpu比较多的进程spa
2. 进一步定位进程里面具体哪些线程占用高top -Hp 873线程
3. 上面线程pid转成16进制,jstack 873找到对应的线程,发现是垃圾回收线程orm
4. 看看为何垃圾回收这么频繁,jstat -gcutil 873 1000 对象
2. 发现内存增加很是快,年老代很快就满了,频繁的执行full gc,因此猜想是年轻代中长时间有对象不释放,直接把内存dump下来用MemoryAnalyzer分析一下 jmap -dump:format=b,file=dump1.hprof 873进程
用MemoryAnalyzer分析找到对应的占用内存比较多的对象内存
点击Details后:form
找到了占用最大的对象, 根据上面的定位分析对应的代码逻辑,看为何这个对象没有被释放。file