我的问题是作为标题,我通过search获得了一些知识:
linux有共享内存如何衡量应用程序或进程的实际内存使用情况?
JVM将保留在Xms中设置的内存量-Xms JVM参考堆内存的含义是什么?
但是还是不知道为什么,有的可以提供一些帮助?
这是我在Ubuntu12.04(64bit)|上运行的testing JDK 1.7.0_04。 以及顶部显示如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4067 brian 20 0 5316m **262m** 7496 S 0 3.3 0:00.30 java -**Xms4096m** -Xmx4096m Test 4066 brian 20 0 3182m **256m** 7496 S 0 3.3 0:00.30 java -**Xms2048m** -Xmx2048m Test 4065 brian 20 0 2114m **252m** 7492 S 0 3.2 0:00.30 java -**Xms1024m** -Xmx1024m Test 4064 brian 20 0 1314m **76m** 7584 S 0 1.0 0:00.20 java -**Xms256m** -Xmx256m Test 4063 brian 20 0 1180m **51m** 7608 S 0 0.7 0:00.21 java -**Xms128m** -Xmx128m Test
您正在查看常驻内存 – 即消耗的物理内存。 在这里看到更多的信息。
但是, 虚拟内存是应用程序占用的内存,包括将内存换出(到磁盘)。 您会看到与虚拟内存和-Xms
设置有更密切的对应关系。
请参阅此serverFault答案以获取更多信息。
当您的JVM启动时,它会将启动时的最大堆大小保留为一个连续的虚拟内存块。 但是,只有实际使用的页面成为常驻页面(实际的主内存)
设置最小大小时,如果不需要它,则不会强制JVM使用那么多的内存。 相反,在这种情况下,减少内存几乎不需要太多努力(你可能还会看到一些小的集合)。在大多数应用程序中,几乎立即就达到了最小大小,但是不管你设置了多大,“hello world”程序都会使用相同的内存最小的尺寸是。