我正在创建一个程序,它将在 RAM 中分配大量数据。现在,如果 RAM 空间不足,程序将被放入虚拟内存并发生分页交换。这是非常缓慢的。是否可以检查 RAM 的剩余空间?是否可以检查系统现在是否正在使用虚拟内存?
这是在 Windows 上的 C++ 上。
您可以使用GlobalMemoryStatusEx函数来获取可用 RAM 的数量。要在 RAM 用完时收到通知,可以使用QueryMemoryResourceNotification方法。
仅仅拥有大量可用内存并不意味着 Windows 不会分页您的程序。您可以尝试 GetCurrentProcess 的 SetProcessWorkingSetSize api,但它不提供保证,您可以使用 VirtualLock 来保证它,但您可能会降低性能。