![一个进程的页面数量是否取决于内存大小](https://linux22.com/image/1387283/%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%E7%9A%84%E9%A1%B5%E9%9D%A2%E6%95%B0%E9%87%8F%E6%98%AF%E5%90%A6%E5%8F%96%E5%86%B3%E4%BA%8E%E5%86%85%E5%AD%98%E5%A4%A7%E5%B0%8F.png)
我读到过一些文章说,只有进程需要启动的页面才会加载到内存中,然后随着程序的运行,可能会有更多页面被加载到内存中,具体取决于您尝试使用的代码或数据。
这种情况是否总是发生,还是取决于您有多少内存以及已加载的内容?例如,如果您只启动了一个进程并且有大量内存,那么是否所有可装入内存的页面都会被加载,还是它们会根据您的操作进行加载?
答案1
是的,这种情况总是会发生。这根本不取决于你有多少 RAM。
实际情况是,如果系统内存更多(其他条件相同),进程将被允许保留更多页面,而不是忍受“工作集替换”。当进程想要在页面中发生故障,但由于可用内存有限,系统会强制执行进程工作集限制时,就会发生工作集替换。在这种情况下,进程必须为其引入的每个页面从其工作集中释放一个页面。
因此,当您查看大内存系统上的进程时,您会发现它们通常都占用比内存少得多的系统更多的 RAM(更大的工作集)。但这并不是因为任何预加载。而是因为稍后没有丢失页面。