1.首先通过top命令查询占用内存较高的的进程,结果如图
2.通过第一步得到的进程PID 通过执行jstack PID查询进程的堆栈信息,根据结果分析进程中是否有线程等待锁或者有大量线程处于blocked状态,比如结果
3.可以导出dump文件然后通过MAT内存分析工具进行内存占用分析,导出dump文件命令: jmap -dump:format=b,file=D:\test\heap.hprof 6956,然后通过MAT工具分析内存占用情况,(工具下载地址:http://www.eclipse.org/mat/downloads.php)下载后解压然后运行程序
4.也可以通过命令jstat -gcutil pid查询进程的jvm的各个区域的内存使用情况和GC情况,结果如图