WINDOWS平臺(tái)的內(nèi)存知識(shí)(任務(wù)管理器,物理內(nèi)存和虛擬內(nèi)存)

windows任務(wù)管理器的進(jìn)程查看

image.png
  • 頁(yè)面錯(cuò)誤 當(dāng)軟件試圖讀取或?qū)懭霕?biāo)記為“不存在”的虛擬內(nèi)存位置時(shí)發(fā)生的中斷。進(jìn)程中當(dāng)數(shù)據(jù)不在內(nèi)存而必須從磁盤(pán)檢索的次數(shù)。頁(yè)面錯(cuò)誤值從進(jìn)程啟動(dòng)的時(shí)間開(kāi)始累計(jì)。
  • 頁(yè)面錯(cuò)誤增量 在“任務(wù)管理器”中,自上一次更新開(kāi)始的頁(yè)面錯(cuò)誤次數(shù)的變化
  • 分頁(yè)池 已指派給進(jìn)程的,已及可以分頁(yè)的系統(tǒng)分配的虛擬內(nèi)存。頁(yè)面調(diào)度就是將很少使用的程序工作內(nèi)存部分從RAM移到其他存儲(chǔ)媒體,通常是硬盤(pán)。在“任務(wù)管理器”中,進(jìn)程使用的系統(tǒng)分配虛擬內(nèi)存數(shù)量以 KB 為單位。
  • 峰值內(nèi)存使用率 在“任務(wù)管理器”中,自進(jìn)程啟動(dòng)以來(lái)駐留于進(jìn)程中的物理內(nèi)存的峰值。
  • 工作集(內(nèi)存) Working set: 可以這么理解, 此值就是該進(jìn)程所占用的總物理內(nèi)存. 由兩部分組成, 即 '專(zhuān)用工作集' + '共享工作集'.
  • 內(nèi)存(專(zhuān)用工作集): 這對(duì)于一個(gè)進(jìn)程是最重要的, 它代表了一個(gè)進(jìn)程獨(dú)占用了多少內(nèi)存.
  • 內(nèi)存(共享工作集): 這是該進(jìn)程和別的進(jìn)程共享的內(nèi)存量. 通常, 這是加載一個(gè) dll 所占用的內(nèi)存.
  • 提交大小,往往被稱(chēng)作內(nèi)存提交大小,用來(lái)標(biāo)識(shí)為某個(gè)進(jìn)程正常使用而保留的虛擬內(nèi)存的數(shù)量。它不一定被占用,但是可以保證系統(tǒng)需要時(shí)隨時(shí)提供給系統(tǒng)使用。
  • 頁(yè)面緩沖池:由內(nèi)核或驅(qū)動(dòng)程序代表進(jìn)程分配的可分頁(yè)內(nèi)核內(nèi)存的數(shù)量??煞猪?yè)內(nèi)存是可寫(xiě)入其他存儲(chǔ)媒體(例如硬盤(pán))的內(nèi)存。
  • 非頁(yè)面緩沖池:由內(nèi)核或驅(qū)動(dòng)程序代表進(jìn)程分配的不可分頁(yè)的內(nèi)核內(nèi)存的數(shù)量。不可分頁(yè)的內(nèi)存是不能寫(xiě)入其他存儲(chǔ)媒體的內(nèi)存。

設(shè)置WINDOWS物理內(nèi)存和虛擬內(nèi)存比例

  • SetProcessWorkingSetSize 和 EmptyWorkingSet
    該函數(shù)不是節(jié)省內(nèi)存,而是強(qiáng)制把進(jìn)程的物理內(nèi)存搬到虛擬內(nèi)存中. 另外有一些資料上說(shuō),該函數(shù)“將有可能導(dǎo)致缺頁(yè)中斷,嚴(yán)重影響性能”
  • 缺頁(yè)中斷 就是要訪問(wèn)的頁(yè)不在主存,需要操作系統(tǒng)將其調(diào)入主存后再進(jìn)行訪問(wèn)。
  • 虛擬內(nèi)存技術(shù) 是計(jì)算機(jī)系統(tǒng)內(nèi)存管理的一種技術(shù)。它使得應(yīng)用程序認(rèn)為它擁有連續(xù)的可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間),而實(shí)際上,它通常是被分隔成多個(gè)物理內(nèi)存碎片,還有部分暫時(shí)存儲(chǔ)在外部磁盤(pán)存儲(chǔ)器上,在需要時(shí)進(jìn)行數(shù)據(jù)交換。目前,大多數(shù)操作系統(tǒng)都使用了虛擬內(nèi)存,如Windows家族的“虛擬內(nèi)存”;Linux的“交換空間”等。
  • 虛擬內(nèi)存 也被稱(chēng)為"頁(yè)面文件". 是Windows 為作為內(nèi)存使用的一部分硬盤(pán)空間。虛擬內(nèi)存在硬盤(pán)上其實(shí)就是為一個(gè)碩大無(wú)比的文件,文件名是PageFile.Sys,通常狀態(tài)下是看不到的。
  • 定位內(nèi)存泄漏有 dotMemory / ANTS Memory Profiler rammap之類(lèi)的工具可以用。
  • 通過(guò)此函數(shù) 傳遞-1/-1后,使進(jìn)程使用的內(nèi)存交換到虛擬內(nèi)存,只保留一小部分代碼.應(yīng)用程序被激活或者有操作請(qǐng)求時(shí),這些內(nèi)存又會(huì)被重新占用。頻繁的設(shè)置會(huì)降低系統(tǒng)性能,因?yàn)橄到y(tǒng)需要頻繁的進(jìn)行內(nèi)存和硬盤(pán)間的頁(yè)面交換。
  • 關(guān)于SetProcessWorkingSetSize減少內(nèi)存占用 的錯(cuò)誤理解
  • 任務(wù)管理器”內(nèi)存列的含義 https://blog.csdn.net/fishmai/article/details/52388844
  • MSDN官方說(shuō)明 SetProcessWorkingSetSize function (winbase.h)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.內(nèi)存的頁(yè)面置換算法 (1)最佳置換算法(OPT)(理想置換算法):從主存中移出永遠(yuǎn)不再需要的頁(yè)面;如無(wú)這樣的...
    杰倫哎呦哎呦閱讀 3,577評(píng)論 1 9
  • 概述 我們都知道一個(gè)進(jìn)程是與其他進(jìn)程共享CPU和內(nèi)存資源的。正因如此,操作系統(tǒng)需要有一套完善的內(nèi)存管理機(jī)制才能防止...
    SylvanasSun閱讀 3,972評(píng)論 0 25
  • 本文轉(zhuǎn)載自 https://juejin.im/post/59f8691b51882534af254317 參考:...
    xingdong閱讀 2,884評(píng)論 0 3
  • 1 內(nèi)存尋址 1.1 物理地址、虛擬地址以及線性地址 物理地址: 物理內(nèi)存的內(nèi)存單元地址 虛擬地址: 程序員看到的...
    瘋狂小王子閱讀 3,123評(píng)論 3 21
  • >計(jì)算機(jī)系統(tǒng)中有幾類(lèi)存儲(chǔ)設(shè)備:cache、內(nèi)存、外存。cache的存取速度最高,可以和CPU匹配,因此其代價(jià)最高,...
    一生信仰閱讀 1,275評(píng)論 0 0

友情鏈接更多精彩內(nèi)容