Amazon web services 没有交换空间时,虚拟内存如何存在?

Amazon web services 没有交换空间时,虚拟内存如何存在?,amazon-web-services,ubuntu,ram,virtual-memory,Amazon Web Services,Ubuntu,Ram,Virtual Memory,在运行free命令时,我看到使用的内存是: 总数:3854884 使用:3752304 免费:102580 共用:352 缓冲区:9252 缓存:150908 -/+缓冲区/缓存: 已用电话:3592144 免费:262740 掉期:0 但在运行htop时,我看到许多进程在VIRT列virtualmemory下使用了4507M的内存。进程使用的RES列物理RAM显示为209M。SHR共享内存为5352M -流程的Xmx配置为2048m 如果交换空间为零,如何使用虚拟内存?这些程序htop等计算的

在运行free命令时,我看到使用的内存是: 总数:3854884 使用:3752304 免费:102580 共用:352 缓冲区:9252 缓存:150908

-/+缓冲区/缓存: 已用电话:3592144 免费:262740

掉期:0

但在运行htop时,我看到许多进程在VIRT列virtualmemory下使用了4507M的内存。进程使用的RES列物理RAM显示为209M。SHR共享内存为5352M

-流程的Xmx配置为2048m


如果交换空间为零,如何使用虚拟内存?

这些程序htop等计算的虚拟内存只是进程请求的地址空间的大小。您有物理内存、实际RAM和虚拟地址空间,当用户空间程序将地址映射到物理内存时,虚拟地址空间将地址映射到物理内存。它们是分开的。0x0ff84560指针可能实际上并不引用RAM的该部分。操作系统将设置一个映射,该映射决定您在RAM中实际引用的位置。更进一步,它可以在有RAM进行备份之前设置映射。这是一个事件驱动的过程。操作系统将根据请求设置映射,没有实际的备份,没有分配物理内存,只有在您尝试使用虚拟内存时才将其实际映射到实际RAM

虚拟内存的大小就是此映射的大小。但并非所有这些都必须由物理RAM支持,所以即使没有交换,它也可以比RAM大。但这会导致问题,程序试图实际使用比RAM更多的内存。如果他们只要求它,只要他们使用它,这一点都没有问题


此外,正如Thilo提到的,内存映射文件可以添加到这一点。您可以将整个100TB文件映射到您的虚拟地址空间—没有问题。操作系统在后台处理后勤工作:将您需要的部件带入您尝试访问的部件,并获取它必须清除物理内存的部件。

这些程序htop等计算的虚拟内存只是进程请求的地址空间的大小。您有物理内存、实际RAM和虚拟地址空间,当用户空间程序将地址映射到物理内存时,虚拟地址空间将地址映射到物理内存。它们是分开的。0x0ff84560指针可能实际上并不引用RAM的该部分。操作系统将设置一个映射,该映射决定您在RAM中实际引用的位置。更进一步,它可以在有RAM进行备份之前设置映射。这是一个事件驱动的过程。操作系统将根据请求设置映射,没有实际的备份,没有分配物理内存,只有在您尝试使用虚拟内存时才将其实际映射到实际RAM

虚拟内存的大小就是此映射的大小。但并非所有这些都必须由物理RAM支持,所以即使没有交换,它也可以比RAM大。但这会导致问题,程序试图实际使用比RAM更多的内存。如果他们只要求它,只要他们使用它,这一点都没有问题


此外,正如Thilo提到的,内存映射文件可以添加到这一点。您可以将整个100TB文件映射到您的虚拟地址空间—没有问题。操作系统在后台处理后勤工作:将您需要的部件放入您尝试访问的部件,并获取它必须清除的部件以清除物理内存。

内存映射文件是否包含在VIRT中?内存映射文件是否包含在VIRT中?因此htop向我显示,该程序请求4GB的虚拟内存,但它没有由于交换空间为0,是否仍要获取该值?这就是崩溃的原因。这不仅仅是因为交换空间为0。内存映射文件使这一点更加复杂。如果你映射了一个100GB的文件,操作系统可能会让它正常工作,但速度会非常慢,因为它必须经常清除一些东西并引入新的东西,这需要暂停你的程序。这取决于程序请求的虚拟内存类型,基本上,内存映射文件的特殊之处在于有一个预定义的位置可以交换页面:文件本身。还有别的什么事吗?操作系统无处存储需要从RAM中清除以腾出空间的数据。因此,htop向我显示,该程序请求4GB的虚拟内存,但由于交换空间为0,它无论如何也无法获得该数据?这就是崩溃的原因。这不仅仅是因为交换空间为0。内存映射文件使这一点更加复杂。如果你映射了一个100GB的文件,操作系统可能会让它正常工作,但速度会非常慢,因为它必须经常清除一些东西并引入新的东西,这需要暂停你的程序。这取决于程序请求的虚拟内存类型,基本上,内存映射文件的特殊之处在于有一个预定义的位置可以交换页面:文件本身。还有别的什么事吗?操作系统没有地方存储需要清除的数据 用公羊腾出空间。