今兒本來想給新寫的程序跑個(gè)壓力測試,結(jié)果剛把數(shù)據(jù)量調(diào)大就崩了。任務(wù)管理器里看內(nèi)存占用才1.8G,明明機(jī)器有16G內(nèi)存,這就很邪門了。我就琢磨著打開資源監(jiān)視器往深里扒拉,發(fā)現(xiàn)虛擬內(nèi)存那欄標(biāo)紅飆到5G多——好家伙,原來問題藏在這兒。
開著資源監(jiān)視器反復(fù)測試,發(fā)現(xiàn)三個(gè)關(guān)鍵點(diǎn):
這驗(yàn)證了我的猜想:程序崩掉跟物理內(nèi)存關(guān)系不大,而是虛擬地址空間塞爆了。
翻了三本操作系統(tǒng)書才搞懂門道:
重點(diǎn)來了:系統(tǒng)會(huì)給虛擬空間設(shè)天花板。像Windows默認(rèn)給程序分配2GB用戶空間。我在注冊表里翻到這條關(guān)鍵參數(shù):HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management 里的SystemPages值。
針對我的64位Win10實(shí)操調(diào)整:
過程中踩了個(gè)大坑:修改后某個(gè)老舊驅(qū)動(dòng)不兼容,藍(lán)屏兩次才排查出問題。在主板官網(wǎng)更了驅(qū)動(dòng)才穩(wěn)下來。
現(xiàn)在終于明白:物理內(nèi)存條插多少只決定"包間"大小,真正卡脖子的是系統(tǒng)給的"包廂預(yù)訂額度"。那些號稱128G內(nèi)存的工作站要是沒調(diào)虛擬空間參數(shù),跑大數(shù)據(jù)照樣崩給你看。這回折騰完的最大收獲是:下次見到程序崩盤先別罵內(nèi)存不夠,按住Alt看資源監(jiān)視器虛擬內(nèi)存曲線才是正經(jīng)事!
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。