我正在創建一個將在RAM中分配大量數據的程序。現在,如果RAM空間不足,程序將被放到虛擬內存併發生分頁交換。這非常慢。是否有可能檢查RAM的剩餘空間?是否有可能檢查系統是否正在使用虛擬內存?檢查Windows上RAM中的剩餘空間?
這是在Windows上的C++。
我正在創建一個將在RAM中分配大量數據的程序。現在,如果RAM空間不足,程序將被放到虛擬內存併發生分頁交換。這非常慢。是否有可能檢查RAM的剩餘空間?是否有可能檢查系統是否正在使用虛擬內存?檢查Windows上RAM中的剩餘空間?
這是在Windows上的C++。
您可以使用GlobalMemoryStatusEx函數來獲得可用RAM的數量。要在RAM耗盡時收到通知,可以使用QueryMemoryResourceNotification方法。
在windows.h不可用的情況下是否有其他替代方法? – Karl
爲什麼不能使用windows.h? – ThomasMcLeod
例如,如果使用Visual C++ express。我回憶說,它不包含windows.h。 – Karl
只是有免費的RAM的數量並不意味着Windows不會頁面您的程序。您可以嘗試SetProcessWorkingSetSize api獲取GetCurrentProcess,但它不提供保證,您可以使用VirtualLock來保證它,但可能會降低性能。
Windows將積極地嘗試使用所有可用的RAM,如果沒有正在使用的程序,則會用磁盤緩存填充它。 –
Windows中的所有內存都是虛擬的。你可能想知道你的程序是否被換成磁盤。 – ThomasMcLeod
@ThomasMcLeod:你知道嗎?您可能是對的... – Karl