建议学习一下操作系统的虚拟内存。简单的说就是用户模式下的进程获取到的地址都是虚拟内存地址,操作系统和内存管理单元会建立内存页面和内存、磁盘之间的映射,进程通过标准方式申请内存的时候并不会分配物理内存,进程第一次访问申请的内存会产生页面错误中断,此时操作系统才会分配一块空闲的物理内存帧给内存页面。
在物理内存资源足够的情况下,操作系统把空闲的物理内存分配给进程是一个开销很小的操作,因为不涉及磁盘IO,而不在申请的时候就分配物理内存可以减少浪费。
而如果你的程序需要,可以用VirtualLock这样的API强制要求一块内存始终在物理内存上,不会被交换,大多数程序没有理由用这个。
发布于 2024-04-06 21:59・IP 属地美国