检查 Windows 上 RAM 的剩余空间?
我正在创建一个程序,它将在 RAM 中分配大量数据。现在,如果 RAM 空间不足,程序将被放入虚拟内存中,并且将发生分页交换。这非常慢。是否可以检查RAM的剩余空间?是否可以检查系统现在是否正在使用虚拟内存?
这是 Windows 上的 C++。
I am creating a program that will allocate a huge amount of data in the RAM. Now, if RAM runs out of space, the program will be put on to virtual memory and paging swap will occur. This is very slow. Is it possible to check for remaining space of RAM? And is it possible to check whether the system is now using virtual memory?
This is on C++ on Windows.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 GlobalMemoryStatusEx 函数来获取可用 RAM 量。要在 RAM 不足时收到通知,可以使用 QueryMemoryResourceNotification 方法。
You can use GlobalMemoryStatusEx function to get the amount of free RAM. To get a notification when you are running out of RAM you can use QueryMemoryResourceNotification method.
仅仅拥有足够的可用 RAM 并不意味着 Windows 不会对您的程序进行分页。您可以尝试 GetCurrentProcess 的 SetProcessWorkingSetSize api,但它不提供保证,您可以改用 VirtualLock,它应该保证它,但您的性能可能会下降。
Just having the amount of free ram doesn't mean windows will not page your program. You can try the SetProcessWorkingSetSize api for GetCurrentProcess, but it doesn't provide a guarantee, you can instead use VirtualLock which should guarantee it, but you can get degraded perfomance.