我的java应用程序,总是需要越来越多的内存(从大约40mb开始,2天后大约140mb)
我用过
./jmap -histo 17364 | head -10
num #instances #bytes class name
----------------------------------------------
1: 1814362 68884536 [C
2: 1813805 29020880 java.lang.String
3: 1604 9989632 [B
4: 1333 266184 [I
5: 5769 250376 [Ljava.lang.Object;
6: 2410 235720 java.lang.Class
7: 2982 119280 java.util.HashMap
了解分配此内存的原因。有没有办法检测哪个实际的java类正在使用这些char-Arrays和字符串?
答案 0 :(得分:0)
您需要进行堆分析,使用jmap生成堆转储 -dump:file = fileLocation PID,之后您可以使用Eclipse MAT打开生成的堆转储。