我們有一個應用程序,可能會分配大量的小對象(取決於用戶輸入)。有時候應用程序耗盡內存並且崩潰。但是,如果我們知道內存分配變得緊張,那麼會存在一些優先級較低的對象,這些對象可能會被破壞,從而使我們能夠正常降級用戶結果。檢測內存運行低前在Windows分配開始失敗
在調用'new'失敗之前,檢測進程內存的最佳方式是什麼?我們可以調用API函數,如GetProcessWorkingSetSize()
或GetProcessMemoryInfo()
,但您如何知道何時達到給定機器的限制(例如,最大分配的80%)?
除非你的硬盤快滿了,這個問題是不是在釋放內存的機器上的金額(因爲你有虛擬磁盤上的內存),但地址空間碎片是由於這些對象和可能的內存泄漏。 – 2012-08-12 12:37:49
@AlexeyFrunze在32位Windows內存分配似乎開始失敗大約1.5GB。這不是內存泄漏,我們可以解釋所有使用過的內存,但是我關於碎片的看法。 – snowdude 2012-08-13 09:00:38