java - 为什么 JVM 消耗的内存比指定的 -Xms 少?

标签 java linux garbage-collection jvm

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

  1. linux 有共享内存 How to measure actual memory usage of an application or process?

  2. JVM 将保留 Xms 中设置的内存量 What does the -Xms JVM mean in reference to heap memory?

但还是不知道为什么,有大佬可以帮忙吗?

这是我在 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

最佳答案

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

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

参见 this ServerFault answer了解更多信息。

关于java - 为什么 JVM 消耗的内存比指定的 -Xms 少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108706/

相关文章:

java - JDK7 现在可以安全使用吗?

java - 无法为 Java 分配足够的堆空间

c# - 这是内存泄漏还是垃圾收集会修复它

mysql - 经典 ASP VBScript 需要替换 MyConn.Execute( query )

java - 为什么在 Android studio 中工作时无法获得清晰的图像?

java - 在 ByteBuddy rebase 期间拦截构造函数

java - KafkaStreams 在读取主题时写入磁盘

linux - Nginx Proxy 下多个位置多个服务器

python - 检查 Python 脚本是否已经在运行

linux - 如何删除文件名的这些部分?