因为项目的原因服务器内存溢出,需要查看内存的使用情况,搜了下发现jmap可以跟踪java的内存分配情况
windows下使用方法:
1、首先用进入命令行用tasklist查看运行的java程序的pid
2、jmap -histo pid > E:\output.txt 将内存信息输出到文件中
3、打开文件如下:
num #instances #bytes class name
--------------------------------------
1: 10000 320000 com.zhidaoba.recommend.server.RequestContent
2: 3559 253408 [C
3: 5173 248304 java.nio.HeapCharBuffer
4: 762 171712 <symbolKlass>
5: 10174 165632 [Ljava.lang.String;
6: 315 91016 [Ljava.lang.Object;
7: 3580 85920 java.lang.String
8: 30 27976 [B
9: 723 23136 java.util.TreeMap$Entry
10: 83 17784 <constMethodKlass>
11: 44 13408 [I
12: 12 10640 <constantPoolKlass>
13: 32 10240 <objArrayKlassKlass>
14: 83 6640 <methodKlass>
15: 53 5088 java.lang.Class
16: 12 4528 <instanceKlassKlass>
其中num是按照占用内存多少排序,instance表示实例的个数,bytes表示占用的字节数
linux使用方法:
待续。。。。