【发布时间】:2013-12-10 21:31:04
【问题描述】:
有没有办法在 Windows 中检查页面是在内存中还是在磁盘中(交换空间)? 我想知道这一点的原因是,如果页面在磁盘中,通过不访问该页面来避免导致页面错误。
【问题讨论】:
-
为什么? (你为什么不让操作系统完成它管理内存的工作?你所做的工作有什么特别之处,它是如此接近硬件级别吗?)
-
我很好奇实际的应用程序是什么,它是一个选项不在请求时访问交换的数据。你的解决方案是什么?
-
这是不可能的。这样的状态指示永远不会可靠。它可以告诉您一个页面已被换出,但它从不保证当您实际访问该页面时它仍在 RAM 中。 check-and-pagelock 方案非常昂贵且未提供。
-
@HansPassant:OP 似乎出于性能原因要求提供提示,所以我猜想一个不完美的启发式方法会起作用。尽管如此,以这种方式绕过系统似乎确实是一件非常可疑的事情。
-
操作系统提供了一些非常基本的保证。能够有效地使用内存当然是核心之一。只有当您的程序没有有效地使用内存时,您才需要寻找解决方法。试图编写代码以确保操作系统在内存方面比您的程序做得更好,这就是把车放在马的前面。