堆使用较少,但可用内存较少

时间:2019-05-07 07:28:06

标签: linux memory jvm heap

我有10 GB RAM

应用程序最大堆:8 GB

当前应用程序堆使用量:3 GB

可用内存:188mb

              total        used        free      shared  buff/cache   available
Mem:           9993        9362         188           2         442         326
Swap:          4095         866        3229

因此,如果我们将Xmx分配给8GB。 RAM会为应用程序堆保留8GB吗?

1 个答案:

答案 0 :(得分:0)

JVM将在其虚拟地址空间中为Java Heap保留8GB。 请注意,还有其他内存区域用于线程堆栈,GC,JIT代码缓存,直接缓冲区等,因此您的Java进程可能消耗的内存不只是-Xmx

我不确定说“堆使用量少但可用内存少”时会遇到什么,但是如果您想知道为什么内存的可用部分不是〜2 GB或什至〜7 GB , 则可能是因为:

  • JVM需要的不仅仅是堆(如前所述),
  • 您报告为“当前应用程序堆使用情况”的内容可能会产生误导,并且GC通常不会将未使用的内存返回给操作系统(您可能希望查看“总内存”使用情况)
  • 操作系统本身和其他应用程序也需要一些内存