在Windows 10 OS
系统上,我安装了VirtualBox
4 GB RAM,用作CentOs 7
操作系统。打开虚拟机后,RAM
主机操作系统的利用率如预期的那样增加到一定水平(系统整体有 8 GB RAM)。
我预计 VM OS 有其 RAM 配额(4 GB),并且在 VM 内部启动的任何应用程序都将使用其 RAM 并且不会影响主机 OS。
但是,当我在虚拟机中运行docker时,overall RAM consumption of the entire system increases
以及当我在虚拟机中启动一些基于java的容器时,系统的RAM消耗再次增加。我重复了这个实验,观察结果是相似的。
我对这种行为有点困惑。我原本以为一旦虚拟机使用其主机操作系统启动,它将为自己保留 4 GB 内存,并且在其中启动的任何应用程序(docker 等)都将使用为虚拟机保留的 RAM,但我看到主机或系统 RAM 消耗反而增加了。
我观察到 Windows 10 任务管理器和 Resmon 中的 RAM 消耗增加了。
在 Linux VM 中启动的 docker 或 java 应用程序是否有可能以某种方式看到整个系统内存可供使用并尝试使用它?我认为这不会发生,因为 VM 提供了与主机操作系统相当程度的隔离。
如果行为是,Linux 操作系统在启动时占用较少的 RAM,并且只有当 VM 内部的应用程序需要更多 RAM 时才会增加,那么是否可以合理地预期,无论应用程序的状态如何,VM 的 RAM 消耗都不会超过分配给它的 4 GB 配额?
答案1
不,虚拟机不会保留其可能使用的所有 RAM。其 RAM 是根据需要分配的。在数据中心中,服务器上运行的虚拟机的累计 RAM 远远超过实际硬件 RAM 大小的情况并不少见。