背景:我的机器有 16 GB 内存。
当我的机器已经使用了 15 GB 的内存,而我的应用程序又分配了 2 GB 的内存块时,我的物理内存就用完了,交换(应该)会弹出并使用可用的磁盘空间。相反,Windows 完全冻结了。为什么会发生这种情况?我以为 Windows(用户进程)永远不会分页出与进程/线程/操作系统内存相关的内存。那么它为什么会阻塞呢?
我预计我的进程会挂起,但为什么整个操作系统都会发生这种情况?一个想法:它与 2 GB 的内存大小有关,它会阻止内部内存管理,直到成功为止。因此其他进程也会被阻止。我不确定这是否有意义。你对此有什么看法?
答案1
我假设 Windows 能够使用页面文件(它没有被禁用并且页面文件中还有剩余空间),而冻结的意思是它需要几乎永远的时间才能显示反应,比如几分钟。
如果 Windows 内存不足(RAM 不足),它会开始将数据从 RAM 交换到硬盘/页面文件。交换数据的确切算法非常复杂,但一般来说,它是最近最少使用的内存,没有被锁定交换(一些内核页面和硬盘驱动器等被锁定)。它甚至可以交换 explorer.exe 的部分和其他一些重要的 GUI 进程或防火墙/防病毒软件。当您尝试与 GUI 交互时,它必须从硬盘加载,与 RAM 相比,速度非常慢,我见过一些案例,至少需要 15 分钟以上才能部分解冻桌面。
如果您想进一步调查,我建议使用性能监视器。在 Windows 8 中,您可以通过任务管理器->性能->资源监视器访问它,但它在较旧的 Windows 系统中也可用。在 Windows 8 中,您甚至可以看到哪个进程和哪个文件是罪魁祸首。
答案2
阅读完问题和评论后,我想我可以回答......
从您所说的情况来看,其他每台 Windows 计算机都是这样工作的。
你的答案是...“硬盘很慢”