12

我的问题如题,通过搜索得到了一些知识:

  1. linux has shared memory 如何测量应用程序或进程的实际内存使用情况?

  2. JVM 将保留 Xms 中设置的内存量 -Xms JVM 参考堆内存是什么意思?

但是还是不知道为什么,有的能帮上忙吗?

这是我在 Ubuntu12.04(64bit) 上运行的测试 | 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
4

2 回答 2

6

您正在查看常驻内存 - 即消耗的物理 RAM。请参阅此处了解更多信息。

然而,虚拟内存是应用程序消耗的内存,包括换出(到磁盘)的内存。您会看到与虚拟内存和您的-Xms设置有更密切的对应关系。

有关更多信息,请参阅此 ServerFault 答案

于 2012-08-24T11:45:34.097 回答
6

当您的 JVM 启动时,它会将您的最大堆大小保留为启动时的一个连续虚拟内存块。但是,只有实际使用的页成为常驻页(实际主存)

当您设置最小大小时,它不会强制 JVM 在不需要时使用那么多内存。取而代之的是,到现在为止,减少内存并不费力(您可能仍会看到一些较小的集合)在大多数应用程序中,几乎立即达到最小大小,但是“hello world”程序将使用相同的内存,无论您设置多大最小尺寸。

于 2012-08-24T12:19:10.410 回答