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