我正在玩MSDN示例進行內存壓力測試(請參閱:http://msdn.microsoft.com/en-us/magazine/cc163613.aspx)以及該工具的擴展吃物理記憶(見http://www.donationcoder.com/Forums/bb/index.php?topic=14895.0;prev_next=next)。雖然虛擬和物理內存之間的差異讓我感到困惑。我認爲每個進程都有2GB的虛擬內存(儘管我也因爲「開銷」而讀取了1.5GB。我的理解是這個虛擬內存中的一些/全部/沒有可能是物理內存,以及物理內存的數量進程可能會隨着時間而改變(內存可能會換成光盤等)我進一步認爲,一般來說,當您分配內存時,操作系統可能會使用物理內存或虛擬內存,因此我總結dwAvailVirtual應該始終如果我的問題沒有很好地形成,我很抱歉,我仍然在努力,但是,我經常(總是)看到相反的結果。讓我的頭腦在Windows中的整個內存管理系統中得到解決。教程/說明/書籍recs是最受歡迎的!爲什麼在Windows Vista上調用GlobalMemoryStatus中的可用物理內存(dwAvailPhys)>可用虛擬內存(dwAvailVirtual)x64
安德魯
啊!我想我錯過了一些基本的東西,而你(懶鬼)似乎正在指出它。 dwAvailVirtual是否指向該進程的可用內存,而dwAvailPhys是指整個系統的可用RAM?那麼通常dwAvailPhys> dwAvailVirtual會有意義。這個過程幾乎可以用完所有的2GB(或4GB?),但是仍然有大量的物理內存可用(用於其他進程)。 謝謝,Andrew – Dave 2010-03-17 23:19:05
另外,你說每個進程在32位系統上獲得4GB 。然後你提到2GB?每個進程的限制是什麼?什麼是外行的解釋?32位如何轉換爲4GB? 謝謝 – Dave 2010-03-17 23:21:01
就是這樣。每個進程都有自己的虛擬內存空間,而物理內存(顯然)是由整個系統共享的,一個32位的數字可以有2^32 = 4G的不同值,如果它被用作字節地址,這意味着它可以尋址4G不同的字節,現在它的一部分保留給內核使用,並且內核地址不能用於用戶代碼,在Win32上,默認情況下是2GB的地址空間 - 在第二個地址空間剩下2GB e應用程序。 – slacker 2010-03-18 18:17:54