下图显示了我的服务器上htop
的结果(很抱歉,由于SO的技术问题,无法将其上传到这里,正在粘贴imgur链接(。
我的观察:
- 我们有足够的内存(使用8/15GB内存(
- 我的java应用程序的
Xmx
最多允许4G堆 - 尽管如此,java应用程序的RES列只有约400MB
- 然而,应用程序的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
简而言之:该值并不意味着您的应用程序使用该内存。