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