【问题标题】:check for remaining space in RAM on Windows?在 Windows 上检查 RAM 中的剩余空间?
【发布时间】:2011-01-17 16:01:40
【问题描述】:

我正在创建一个程序,它将在 RAM 中分配大量数据。现在,如果 RAM 空间不足,程序将被放入虚拟内存并发生分页交换。这很慢。是否可以检查 RAM 的剩余空间?是否可以检查系统现在是否正在使用虚拟内存?

这是在 Windows 上的 C++ 上。

【问题讨论】:

  • Windows 将积极尝试使用所有可用的 RAM,如果没有程序在积极使用它,则用磁盘缓存填充它。
  • 所有内存在 Windows 中。您可能想知道您的程序是否被交换到磁盘。
  • @ThomasMcLeod:你知道吗?你可能是对的......

标签: c++ windows memory ram


【解决方案1】:

您可以使用GlobalMemoryStatusEx 函数来获取可用 RAM 的数量。要在 RAM 用完时收到通知,您可以使用 QueryMemoryResourceNotification 方法。

【讨论】:

  • 在windows.h不可用的情况下是否有替代方案?
  • 为什么 windows.h 不可用?
  • 例如,如果您使用 Visual C++ express。我记得,它不附带 windows.h。
  • 我会很惊讶 Visual C++ 不包含标准的 Windows 标头。但是你可以随时下载 Win32 SDK。
  • @unknownthreat,Visual C++ Express(至少 2010 年)确实随 Windows SDK 一起提供,并且 IDE 配置为默认找到它。你应该可以只用#include "windows.h" 就可以了。
【解决方案2】:

拥有大量可用内存并不意味着 Windows 不会分页您的程序。您可以尝试 GetCurrentProcess 的 SetProcessWorkingSetSize api,但它不提供保证,您可以使用 VirtualLock 来保证它,但您可能会降低性能。

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多