1、top命令:Linux命令。可以查看实时的内存使用情况。 然后使用大写M
进程按照内存使用排序如图:
2、jmap -histo:live [pid],然后分析具体的对象数目和占用内存大小,从而定位代码。
jmap -histo:live 9823 | head -n 100 // 查询前100个内存使用过高的java类
结果如图:
从结果上看String 类使用内存过高,可以检测一下代码中String 使用情况。这里只是我测试服的情况,小伙伴可以查看自己服务器上java程序的内存使用情况。
class name 是对象类型 说明一下
B byte
C char
D double
F float
I int
J long
Z boolean
[ 数组,如[I表示int[]
[L+类名 其他对象
3、jmap -dump:live,format=b,file=xxx.xxx [pid],然后利用MAT工具分析是否存在内存泄漏等等。
jmap -dump:live,format=b,file=servermem.bin 9823
把这个bin文件dump下来使用MAT工具进行分析,如何使用下章讲解。
说明:由于环境不一样测试的结果很可能不一样哦
[小福利:]推荐一个非常好用的商业java分析工具 jProfile
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。