2011-01-17 48 views
2

我正在創建一個將在RAM中分配大量數據的程序。現在,如果RAM空間不足,程序將被放到虛擬內存併發生分頁交換。這非常慢。是否有可能檢查RAM的剩餘空間?是否有可能檢查系統是否正在使用虛擬內存?檢查Windows上RAM中的剩餘空間?

這是在Windows上的C++。

+1

Windows將積極地嘗試使用所有可用的RAM,如果沒有正在使用的程序,則會用磁盤緩存填充它。 –

+2

Windows中的所有內存都是虛擬的。你可能想知道你的程序是否被換成磁盤。 – ThomasMcLeod

+1

@ThomasMcLeod:你知道嗎?您可能是對的... – Karl

回答

4

您可以使用GlobalMemoryStatusEx函數來獲得可用RAM的數量。要在RAM耗盡時收到通知,可以使用QueryMemoryResourceNotification方法。

+0

在windows.h不可用的情況下是否有其他替代方法? – Karl

+1

爲什麼不能使用windows.h? – ThomasMcLeod

+0

例如,如果使用Visual C++ express。我回憶說,它不包含windows.h。 – Karl

1

只是有免費的RAM的數量並不意味着Windows不會頁面您的程序。您可以嘗試SetProcessWorkingSetSize api獲取GetCurrentProcess,但它不提供保證,您可以使用VirtualLock來保證它,但可能會降低性能。