请问有没有人能够向我解释一下虚拟内存和交换空间的区别?
为什么我们说对于32位机器,最大可访问的虚拟内存只有4GB?
请问有没有人能够向我解释一下虚拟内存和交换空间的区别?
为什么我们说对于32位机器,最大可访问的虚拟内存只有4GB?
-m 100m
命令在Java Docker镜像中运行“sh”,然后检查swapon
(通常为1GB
),现在用java -Xmx10g -Xms10g HelloWorld
运行一个非常简单的HelloWorld.java
程序。它的交换空间是1GB
+ 100MB
= 10GB
吗?当然不是! - Eugene我的看法是把交换空间的概念当做虚拟内存等同于非常具有误导性的。虚拟内存是一个比交换空间更为普遍的概念。在其他方面中,虚拟内存允许进程在执行期间引用虚拟地址,这些地址通过硬件和页表的支持被转换成物理地址。因此,进程不必关心系统有多少物理内存,或指令或数据实际上驻留在物理内存层次结构的哪里。虚拟内存允许进行这种映射。所引用的项(指令或数据)可能驻留在L1、L2、RAM或最终的磁盘中,在这种情况下,它将被加载到主内存中。
交换空间只是二级存储器上的一个位置,用于存储页面处于非活动状态时。如果没有足够的RAM,操作系统可能会决定将进程的页面换出,以腾出其他进程页面的空间。处理器从来不会直接从交换空间中执行指令或读写数据。
请注意,在没有虚拟内存的系统中也可以有交换空间。也就是说,直接访问物理地址的进程仍然可以在磁盘上有一部分。