我按照以下说明启动了Java程序:
java -Xms32m -Xmx32m -jar client.jar
大约一个小时后,我使用top命令查看内存,如下所示:
PID USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
13710 hlkj 20 0 3456.8m 186.0m 16.5m S 0.0 1.2 13:22.03 java
该过程使用了186.0m。
然后我用jconsole检查了jvm的情况。
已使用堆(32M)+未使用堆(32M)+已使用线程堆栈(28 * 1M)≈90M
那么其他90M内存又去了哪里?
jmap内容:
~$ jmap -heap 13710
Attaching to process ID 13710, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.181-b13
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 33554432 (32.0MB)
NewSize = 11010048 (10.5MB)
MaxNewSize = 11010048 (10.5MB)
OldSize = 22544384 (21.5MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 9961472 (9.5MB)
used = 7768720 (7.4088287353515625MB)
free = 2192752 (2.0911712646484375MB)
77.9876708984375% used
From Space:
capacity = 524288 (0.5MB)
used = 98304 (0.09375MB)
free = 425984 (0.40625MB)
18.75% used
To Space:
capacity = 524288 (0.5MB)
used = 0 (0.0MB)
free = 524288 (0.5MB)
0.0% used
PS Old Generation
capacity = 22544384 (21.5MB)
used = 13431544 (12.809318542480469MB)
free = 9112840 (8.690681457519531MB)
59.578225778978926% used
7956 interned Strings occupying 621672 bytes.