Nav*_*Nav 2 ubuntu ram virtual-memory amazon-web-services
在运行“free”命令时,我看到使用的内存为:
total:3854884
使用:3752304
free:102580
共享:352
缓冲区:9252
缓存:150908
-/+ 缓冲区/缓存:已用:3592144
空闲:262740
Swap: 0 0 0
但在运行时htop,我看到有许多进程在 VIRT 列(虚拟内存)下使用 4507M 的内存量。RES 列(进程正在使用的物理 RAM)显示 209M。SHR(共享内存)为5352M。
-Xmx进程配置为2048m。
如果交换空间为零,如何使用虚拟内存?
这些程序(htop 等)计算的虚拟内存只是进程请求的地址空间的大小。您拥有物理内存、实际 RAM 和虚拟地址空间,该空间将用户空间程序看到的地址映射到物理内存。他们是分开的。指针0x0ff84560可能实际上并不引用 RAM 的那部分。操作系统会建立一个映射来决定您实际引用的 RAM 中的位置。更进一步,它可以在 RAM 进行备份之前设置映射。这是一个事件驱动的过程。操作系统将根据请求设置映射,没有实际支持,没有分配物理内存,并且只有在您尝试使用虚拟内存时才将其实际映射到实际 RAM。
虚拟内存的大小就是这个映射的大小。但并非所有这些都必须由物理 RAM 支持,因此即使没有交换,它也可以大于 RAM。但这会导致程序尝试实际使用比 RAM 更多的内存。如果他们只要求它,只要他们使用它,那根本没有问题。
此外,正如 Thilo 提到的,内存映射文件可以对此进行补充。您可以毫无问题地将整个 100TB 文件映射到虚拟地址空间。操作系统在后台处理后勤工作:引入您需要的部分(您尝试访问的部分)并收获清除物理内存所需的部分。
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |