为什么我的 Java 应用程序不使用 Xmx 选项允许的整个堆大小?



下图显示了我的服务器上htop的结果(很抱歉,由于SO的技术问题,无法将其上传到这里,正在粘贴imgur链接(。

我的观察:

  1. 我们有足够的内存(使用8/15GB内存(
  2. 我的java应用程序的Xmx最多允许4G堆
  3. 尽管如此,java应用程序的RES列只有约400MB
  4. 然而,应用程序的VIRT是9.6GB

问题:JVM为什么不使用允许使用的整个4GB堆空间?而是使用虚拟内存?

https://i.stack.imgur.com/AE90P.jpg

如果你的应用程序没有使用允许的堆内存,那就意味着它不需要它。

关于虚拟内存的含义,请检查以下问题和投票最多的答案:https://serverfault.com/questions/138427/what-does-virtual-memory-size-in-top-mean
简而言之:该值并不意味着您的应用程序使用该内存。

最新更新