Java jvm内存与操作系统显示的内存不一致
我使用以下说明启动java程序:Java jvm内存与操作系统显示的内存不一致,java,Java,我使用以下说明启动java程序: java-Xms32m-Xmx32m-jarclient.jar 大约一小时后,我使用top命令查看内存,如下所示: PID USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
java-Xms32m-Xmx32m-jarclient.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)≈90米
那么剩下的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.
Xmx
设置限制最大堆空间,即加载和运行java程序的空间;它由JVM管理。但是JVM本身并没有加载到堆中。(尽管JRE中的Java类将放在堆中,例如Java.lang.String)同样,Java8中的heap space和metaspace(PremGen)是两个不同的空间。堆空间用于对象,元空间用于在jmap输出中加载类文件。MetamapSize=21807104(20.796875MB)。此外,jconsole的非堆空间约为32M,包括元空间、代码缓存等。Xmx
设置限制了最大堆空间,即加载和运行java程序的空间;它由JVM管理。但是JVM本身并没有加载到堆中。(尽管JRE中的Java类将放在堆中,例如Java.lang.String)同样,Java8中的heap space和metaspace(PremGen)是两个不同的空间。堆空间用于对象,元空间用于在jmap输出中加载类文件。MetamapSize=21807104(20.796875MB)。此外,jconsole的非堆大约为32M,包括元空间、代码缓存等。