• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿(mǎn)街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Windows任務(wù)管理器原理+內(nèi)存管理機(jī)密+揭穿內(nèi)存優(yōu)化工具的騙局

            Windows任務(wù)管理器原理+內(nèi)存管理機(jī)密+揭穿內(nèi)存優(yōu)化工具的騙局
             
            我們?cè)跒g覽網(wǎng)頁(yè)時(shí),也許會(huì)經(jīng)常看到一些彈出廣告,例如“整理內(nèi)存碎片、提升系統(tǒng)性能”、或者“大大減少系統(tǒng)和程序崩潰的可能性,回收垃圾內(nèi)存”等等。如果點(diǎn)擊這些彈出廣告鏈接,則會(huì)看到某些所謂的優(yōu)化軟件,聲稱(chēng)只需花費(fèi)9.95、14.95或者29.95美元,就可以輕松實(shí)現(xiàn)所有的功能。看上去,這些工具軟件確實(shí)不錯(cuò),但是實(shí)際上最好的情況,這些所謂的內(nèi)存優(yōu)化工具沒(méi)有任何效用;而最差的情況,則可能會(huì)嚴(yán)重降低系統(tǒng)性能。
             
            盆盆評(píng)注 在國(guó)內(nèi),廣告語(yǔ)更加精彩,“讓您的系統(tǒng)運(yùn)行如飛”、“讓W(xué)indows插翅能飛”,充分體現(xiàn)漢語(yǔ)的優(yōu)越性。
             
            市面上這些所謂的“內(nèi)存優(yōu)化工具”有很多—有些是商業(yè)軟件,有些則是自由軟件。可能我們已經(jīng)在系統(tǒng)上安裝了這些軟件。這些軟件到底能夠起什么作用?它們是怎樣試圖愚弄我們,讓我們誤認(rèn)為它們可以達(dá)到所承諾的目的? 那就讓我們一起好好分析一下內(nèi)存優(yōu)化程序的內(nèi)部原理,看看它們?nèi)绾巫學(xué)indows內(nèi)存計(jì)數(shù)器顯示出誘人的結(jié)果。
             
            用戶(hù)界面
             
            通常,內(nèi)存優(yōu)化工具會(huì)在用戶(hù)界面上顯示一個(gè)圖形標(biāo)簽,以表明當(dāng)前的可用內(nèi)存,還會(huì)顯示一個(gè)指示條,以表明當(dāng)前設(shè)置的閾值,超過(guò)這個(gè)閾值,該工具就會(huì)開(kāi)始行動(dòng)(所謂的優(yōu)化內(nèi)存)。還有一個(gè)指示條,用來(lái)顯示優(yōu)化工具可以釋放的內(nèi)存容量。通常用戶(hù)可以配置以上兩種或者其中一種設(shè)置,還可以手動(dòng)觸發(fā)內(nèi)存優(yōu)化,或者設(shè)置計(jì)劃任務(wù)。某些工具還會(huì)詳細(xì)顯示執(zhí)行過(guò)程。
             
            當(dāng)執(zhí)行內(nèi)存優(yōu)化的計(jì)劃任務(wù)時(shí),通常這些程序的可用內(nèi)存計(jì)數(shù)器會(huì)上升,有時(shí)候還可以顯示動(dòng)態(tài)效果,給人的感覺(jué)好像是這些工具確實(shí)正在釋放內(nèi)存,以供我們的應(yīng)用程序使用。要理解這些內(nèi)存優(yōu)化工具如何讓可用內(nèi)存的數(shù)字不斷上升,我們必須理解Windows是如何管理物理內(nèi)存的。
             
            Windows內(nèi)存管理
             
            和大多數(shù)現(xiàn)代操作系統(tǒng)一樣,Windows實(shí)現(xiàn)按需調(diào)頁(yè)的虛擬內(nèi)存機(jī)制。由于操作系統(tǒng)使用了虛擬內(nèi)存,這就給應(yīng)用程序造成了一個(gè)假象,以為計(jì)算機(jī)安裝的內(nèi)存遠(yuǎn)遠(yuǎn)超過(guò)自己所需要的數(shù)量。
             
            在32位的Windows計(jì)算機(jī)上,進(jìn)程具有4GB的虛擬內(nèi)存地址空間,操作系統(tǒng)通常會(huì)把這4GB的地址空間劃分為進(jìn)程和系統(tǒng)兩個(gè)部分。因此,每個(gè)進(jìn)程可以獲得2GB的虛擬內(nèi)存,根據(jù)可用的容量。分配給所有進(jìn)程的虛擬內(nèi)存總數(shù)不能超過(guò)頁(yè)面文件和大多數(shù)物理內(nèi)存的總和(操作系統(tǒng)本身也要占據(jù)一小部分物理內(nèi)存)。
             
            有了這種機(jī)制,加上足夠大的頁(yè)面文件,就可以給進(jìn)程分配超過(guò)物理內(nèi)存容量的虛擬內(nèi)存,Windows內(nèi)存管理子系統(tǒng)必須讓多個(gè)進(jìn)程和緩存的文件數(shù)據(jù)(由緩存管理器管理)共享物理內(nèi)存。如圖1所示,內(nèi)存管理器給每個(gè)進(jìn)程(例如Windows Explorer、記事本和Word)指派一部分物理內(nèi)存,這叫做進(jìn)程的工作集。可分頁(yè)的內(nèi)核和驅(qū)動(dòng)程序部分,加上可分頁(yè)的內(nèi)核內(nèi)存緩沖區(qū)(叫做分頁(yè)池),還有緩存管理器所管理的物理內(nèi)存,它們具有自己的工作集,叫做系統(tǒng)工作集。

            圖1
            盆盆譯注:可分頁(yè)表示可以經(jīng)過(guò)調(diào)頁(yè)轉(zhuǎn)移到頁(yè)面文件上,以便空出可用內(nèi)存供其他進(jìn)程使用。但是有些重要部分是不可以進(jìn)行分頁(yè)的,例如內(nèi)存管理器本身就不能分頁(yè),還有憑據(jù)緩存里的重要憑據(jù)信息(例如長(zhǎng)期密鑰、Kerberos票據(jù)等)都不能進(jìn)行分頁(yè)。 
            工作集就是進(jìn)程在物理內(nèi)存中的部分,可以用一個(gè)隊(duì)列(數(shù)據(jù)結(jié)構(gòu))來(lái)表示。也就是說(shuō)如果進(jìn)程訪問(wèn)的頁(yè)在工作集里,就不會(huì)發(fā)生頁(yè)面錯(cuò)誤事件。話(huà)反過(guò)來(lái)說(shuō),如果進(jìn)程所需訪問(wèn)的頁(yè)不在工作集中,就必須進(jìn)行分頁(yè)操作。
             
            內(nèi)存管理器可以擴(kuò)展或者縮短系統(tǒng)和進(jìn)程的工作集,以便讓進(jìn)程可以快速訪問(wèn)其代碼和數(shù)據(jù)。計(jì)算機(jī)的內(nèi)存管理硬件設(shè)備要求Windows按照“頁(yè)”的塊級(jí)別來(lái)管理工作集和虛擬內(nèi)存。在32位的x86處理器上,頁(yè)通常是4096字節(jié)(4KB)。然而操作系統(tǒng)和其他需要大量訪問(wèn)內(nèi)存的應(yīng)用程序,也可以使用4MB的“頁(yè)”,以便優(yōu)化性能。
            盆盆譯注:為什么使用4MB的“頁(yè)”可以?xún)?yōu)化性能?通過(guò)閱讀《Windows Internals》第七章內(nèi)存管理部分,我們可以了解到,Windows的內(nèi)存管理采用TLB的硬件數(shù)據(jù)結(jié)構(gòu)來(lái)緩存頁(yè)表里的數(shù)據(jù)。如果采用4MB的頁(yè),由于總的頁(yè)數(shù)比較少,TLB緩存中的項(xiàng)就不需要經(jīng)常刷新,這樣就不會(huì)由于TLB里沒(méi)有緩存,而被迫到頁(yè)表里讀取地址,以增加性能。
            但是為什么不默認(rèn)采用4MB,而要采用4KB呢? 《Windows Internals》進(jìn)一步提到,由于頁(yè)需要采用保護(hù)機(jī)制,大的頁(yè)面不利于設(shè)置更細(xì)微的保護(hù)粒度。例如在4MB的數(shù)據(jù)中,一部分需要只讀訪問(wèn),另一部分需要讀寫(xiě)訪問(wèn),則整個(gè)頁(yè)只能設(shè)置為讀寫(xiě)訪問(wèn)。
             
            如果進(jìn)程所訪問(wèn)的虛擬內(nèi)存頁(yè)不在工作集中,進(jìn)程就會(huì)觸發(fā)一個(gè)頁(yè)面錯(cuò)誤的硬件異常。如果發(fā)生這種情況,內(nèi)存管理器會(huì)分配一個(gè)可用的物理內(nèi)存頁(yè),以存放最近訪問(wèn)的數(shù)據(jù)。另外,內(nèi)存管理器可能會(huì)給進(jìn)程工作集添加新的頁(yè),以擴(kuò)展進(jìn)程的工作集。然而,如果內(nèi)存管理器認(rèn)為進(jìn)程的工作集已經(jīng)足夠大了,它就會(huì)把工作集中的一個(gè)頁(yè)調(diào)出去,以便騰出空間存放新的頁(yè)。替換的策略是選擇進(jìn)程最近最少訪問(wèn)的頁(yè),這主要是假設(shè)進(jìn)程在未來(lái)訪問(wèn)該頁(yè)的可能性很小。
             
            當(dāng)內(nèi)存管理器把頁(yè)從進(jìn)程的工作集中移走,它必須決定應(yīng)該怎樣處理這個(gè)頁(yè)。如果該頁(yè)已經(jīng)修改過(guò)了,內(nèi)存管理器會(huì)首先把它放到已修改列表中,這個(gè)列表中的頁(yè)最終會(huì)寫(xiě)入到頁(yè)面文件,或者寫(xiě)入這些頁(yè)所對(duì)應(yīng)的內(nèi)存映射文件中。內(nèi)存管理器會(huì)把頁(yè)從已修改列表移動(dòng)到備用列表中。未修改的頁(yè)會(huì)直接移動(dòng)到備用列表中。所以,我們可以把備用列表看成是文件數(shù)據(jù)的緩存。
            盆盆譯注:總結(jié)一下,當(dāng)進(jìn)程的工作集已滿(mǎn),想要訪問(wèn)新的頁(yè),則必須把老的頁(yè)移走。這些老的頁(yè),如果已經(jīng)修改過(guò),則會(huì)移動(dòng)到已修改列表,如果沒(méi)有修改過(guò),則會(huì)移動(dòng)到備用列表。
            到現(xiàn)在為止,物理內(nèi)存的兩個(gè)列表(數(shù)據(jù)結(jié)構(gòu))已經(jīng)出來(lái)了,一個(gè)是備用列表,另一個(gè)是已修改列表。
             
            可用內(nèi)存
             
            在本文的前面部分,曾經(jīng)提到發(fā)生頁(yè)面錯(cuò)誤時(shí),內(nèi)存管理器會(huì)給進(jìn)程提供一個(gè)可用的物理內(nèi)存頁(yè),但是還沒(méi)有討論什么叫做可用內(nèi)存。物理內(nèi)存中的備用列表就是內(nèi)存管理器所認(rèn)為的一部分可用內(nèi)存。其他一部分可用內(nèi)存,它們的頁(yè)所包含的數(shù)據(jù)屬于已釋放的虛擬內(nèi)存(例如這些頁(yè)包含已退出進(jìn)程的數(shù)據(jù));還有一部分可用內(nèi)存,包含剛被釋放的頁(yè),這些頁(yè)隨后會(huì)被內(nèi)存管理器的低優(yōu)先級(jí)頁(yè)清零線(xiàn)程用全零來(lái)填充。這些類(lèi)型的頁(yè)分別保存在內(nèi)存管理器的自由列表和清零頁(yè)列表中。
            盆盆譯注:物理內(nèi)存的另外兩個(gè)列表(數(shù)據(jù)結(jié)構(gòu))自由列表和清零頁(yè)列表。可用內(nèi)存由三部分(三個(gè)數(shù)據(jù)結(jié)構(gòu))組成:備用列表、自由列表和清零頁(yè)列表,正如圖1所示的那樣。
             
            圖2顯示了工作集和這些頁(yè)列表之間的轉(zhuǎn)化。系統(tǒng)線(xiàn)程每秒鐘喚醒一次,調(diào)用內(nèi)存管理器的工作集管理程序,對(duì)系統(tǒng)和進(jìn)程工作集進(jìn)行分析。如果發(fā)現(xiàn)可用內(nèi)存很低,工作集管理程序就會(huì)挑選一些進(jìn)程,這些進(jìn)程在過(guò)去的一秒鐘里頁(yè)面錯(cuò)誤發(fā)生率最低,然后從它們的工作集中移走一些頁(yè)。這些移走的頁(yè)會(huì)轉(zhuǎn)移到已修改列表或者備用列表(還記得盆盆前面的注釋吧),這樣就可以騰出可用內(nèi)存了(盆盆譯注:其實(shí)只有備用列表里的部分,才算是可用內(nèi)存)。這種協(xié)調(diào)機(jī)制的其中一個(gè)重要的副作用是:如果系統(tǒng)需要為其他進(jìn)程分配內(nèi)存,內(nèi)存管理器會(huì)從空閑進(jìn)程的工作集中抽取內(nèi)存頁(yè)。所以,空閑進(jìn)程的工作集會(huì)最終消失,這意味著,如果進(jìn)程長(zhǎng)時(shí)間處于空閑狀態(tài),那么最終它們將不會(huì)占據(jù)任何物理內(nèi)存。

            圖2 盆盆漢化 版權(quán)所有
             
            如果進(jìn)程需要請(qǐng)求新的物理內(nèi)存頁(yè),內(nèi)存管理器首先會(huì)查看該頁(yè)是不是位于備用列表或者已修改頁(yè)列表。如果該頁(yè)曾經(jīng)從進(jìn)程工作集中移走,并且沒(méi)有因?yàn)槠渌康亩黄渌M(jìn)程重新使用,那么該頁(yè)應(yīng)該還在這兩個(gè)列表里(盆盆譯注:就是指?jìng)溆昧斜砘蛘咭研薷牧斜?/span>)。把內(nèi)存頁(yè)重新拿回,并放到進(jìn)程的工作集中,這叫做軟頁(yè)面錯(cuò)誤,因?yàn)楹瓦@硬頁(yè)面錯(cuò)誤不一樣,軟頁(yè)面錯(cuò)誤不需要從硬盤(pán)的頁(yè)面文件或者其他文件中讀入數(shù)據(jù)。
            如果所需請(qǐng)求的內(nèi)存頁(yè)并不在備用列表或者已修改列表中,內(nèi)存管理器就會(huì)從某個(gè)列表上摘取一頁(yè),首先會(huì)檢查自由列表,然后是清零頁(yè)列表,最后是備用列表(盆盆譯注:這也再次說(shuō)明了,可用內(nèi)存由這三部分組成)。如果可用內(nèi)存不夠,內(nèi)存管理器會(huì)觸發(fā)平衡集管理器,來(lái)調(diào)整進(jìn)程的工作集,以便生成上述的三個(gè)列表,從而獲得可用內(nèi)存。如果內(nèi)存管理器不得不從自由列表、備用列表或者清零頁(yè)列表中移除內(nèi)存頁(yè),以便重新使用,它會(huì)確定如何訪問(wèn)目標(biāo)代碼或者數(shù)據(jù),這會(huì)導(dǎo)致從頁(yè)面文件或者進(jìn)程映像文件中讀取數(shù)據(jù),或者創(chuàng)建由零填充的數(shù)據(jù)—如果應(yīng)用程序需要分配新的數(shù)據(jù),而且所獲得的內(nèi)存頁(yè)并不是取自清零頁(yè)列表(盆盆譯注:如果是從清零頁(yè)列表中獲取的頁(yè),則無(wú)需再由零填充,因?yàn)楸緛?lái)就已經(jīng)清零了)。
             
            創(chuàng)建可用內(nèi)存
             
            理解了內(nèi)存管理器的行為,現(xiàn)在我們可以把目光轉(zhuǎn)向內(nèi)存優(yōu)化工具的行為。內(nèi)存優(yōu)化工具所顯示的可用內(nèi)存數(shù)值,等同于任務(wù)管理器的“性能”標(biāo)簽頁(yè)上所顯示的“可用數(shù)”,如圖3所示。可用內(nèi)存的數(shù)值是備用列表、自由列表和清零頁(yè)列表這三個(gè)數(shù)值的相加。而系統(tǒng)緩存,則是備用列表和系統(tǒng)工作集這兩個(gè)數(shù)值的相加。在Windows NT 4.0和以前的版本,文件緩存則只等于系統(tǒng)工作集的大小。

            圖3 盆盆制作 版權(quán)所有
            盆盆譯注:這部分的內(nèi)容很好地解釋了任務(wù)管理器“性能”標(biāo)簽頁(yè)里的術(shù)語(yǔ),什么叫做可用內(nèi)存,什么叫做系統(tǒng)緩存。
             
            內(nèi)存管理器可以分配、然后釋放一大塊虛擬內(nèi)存,內(nèi)存優(yōu)化工具正是利用了內(nèi)存管理器的這一特點(diǎn)。內(nèi)存優(yōu)化工具的作用如圖4所示。最上方的條狀圖顯示優(yōu)化之前的工作集和可用內(nèi)存。中間的條狀圖顯示內(nèi)存優(yōu)化工具(RAM optimizer)發(fā)出大內(nèi)存的請(qǐng)求,在極短的時(shí)間里產(chǎn)生大量的頁(yè)面錯(cuò)誤。作為回應(yīng),內(nèi)存管理器會(huì)增加內(nèi)存優(yōu)化工具的工作集。這種工作集的擴(kuò)展是以犧牲可用內(nèi)存作為代價(jià)—這時(shí)候可用內(nèi)存會(huì)變得很低—同時(shí)以減少其他進(jìn)程的工作集作為代價(jià)。最下方的條狀圖顯示,內(nèi)存優(yōu)化工具會(huì)釋放內(nèi)存,內(nèi)存管理器會(huì)把所有的內(nèi)存頁(yè)從它的工作集中轉(zhuǎn)移到自由列表中,所以可用內(nèi)存會(huì)大大增加。絕大多數(shù)的內(nèi)存優(yōu)化工具隱藏了第一階段中可用內(nèi)存急劇下降的事實(shí),但是如果我們?cè)趦?yōu)化的時(shí)候啟動(dòng)任務(wù)管理器,就可以看到可用內(nèi)存在最初會(huì)急劇下降。

            圖4
             
            盡管從表面上來(lái)看,可用內(nèi)存越多越好,其實(shí)不然。內(nèi)存優(yōu)化工具雖然使得可用內(nèi)存數(shù)大大增加,但是它們會(huì)強(qiáng)迫其他進(jìn)程的數(shù)據(jù)和代碼交換出內(nèi)存。假設(shè)我們正在運(yùn)行Word,當(dāng)內(nèi)存優(yōu)化工具強(qiáng)制增加可用內(nèi)存時(shí),Word的打開(kāi)文檔和程序代碼原本是在內(nèi)存中(工作集),結(jié)果不得不從磁盤(pán)中重新讀入,我們才能繼續(xù)編輯文檔。在服務(wù)器上,這種性能的損失將會(huì)變得非常嚴(yán)重,這是因?yàn)榫彺嬖趥溆昧斜砗拖到y(tǒng)工作集中的文件數(shù)據(jù)(還有活動(dòng)服務(wù)端進(jìn)程所擁有的代碼和數(shù)據(jù))很可能會(huì)丟失。
            盆盆譯注:所謂的內(nèi)存優(yōu)化工具,是以犧牲其他進(jìn)程的性能作為代價(jià),同時(shí)還會(huì)導(dǎo)致系統(tǒng)重要進(jìn)程的代碼和數(shù)據(jù)交換到磁盤(pán),對(duì)于總體性能來(lái)說(shuō),得不償失。Windows Vista的內(nèi)存管理,并沒(méi)有強(qiáng)調(diào)可用內(nèi)存足夠多,而是確保內(nèi)存里包含正確的內(nèi)容,這樣才能盡可能地減少磁盤(pán)I/O,提升整體的用戶(hù)體驗(yàn)。
             
            其他的宣傳功效
             
            一些廠商宣傳他們的內(nèi)存優(yōu)化產(chǎn)品還具有其他一些功能。例如該優(yōu)化工具可以把一些無(wú)用進(jìn)程所占據(jù)的內(nèi)存釋放出來(lái),例如運(yùn)行在任務(wù)欄通知區(qū)域上的進(jìn)程。這些所謂的功效都是不正確的,因?yàn)閃indows已經(jīng)自動(dòng)調(diào)整了空閑進(jìn)程的工作集。內(nèi)存管理器已經(jīng)具有所有必需的內(nèi)存優(yōu)化功能。
            盆盆譯注:盆盆在Windows Vista做實(shí)驗(yàn),證實(shí)了Mark Russinovich的說(shuō)法。以Daemon Tool為例,平時(shí)空閑的時(shí)候,其工作集只有3MB左右(專(zhuān)用工作集只有350KB),而當(dāng)打開(kāi)其配置界面時(shí)(使其不處于空閑狀態(tài)時(shí)),其工作集達(dá)到10MB左右(專(zhuān)用工作集也達(dá)到約3MB)。如圖5所示,綠色部分代表空閑時(shí)的工作集,而紫色部分代表活動(dòng)時(shí)(Active)的工作集大小。另外要注意,Windows Vista中文版的翻譯有誤,Working Set,不能翻譯為工作設(shè)置,而應(yīng)該是工作集

            圖5 盆盆制作 版權(quán)所有
             
            內(nèi)存優(yōu)化工具的開(kāi)發(fā)者拋出的另外一個(gè)謬論,就是他們的產(chǎn)品可以對(duì)內(nèi)存碎片進(jìn)行整理。 分配一大塊虛擬內(nèi)存,然后再釋放,也許會(huì)生成一大片物理連續(xù)的可用內(nèi)存。然而,由于虛擬內(nèi)存對(duì)進(jìn)程屏蔽了物理內(nèi)存的布局,進(jìn)程不能直接從虛擬內(nèi)存(由連續(xù)的物理內(nèi)存所提供)中得益。當(dāng)進(jìn)程運(yùn)行時(shí),由于工作集的調(diào)整和擴(kuò)展,雖然有一大片連續(xù)的可用內(nèi)存,但是進(jìn)程的虛擬內(nèi)存到物理內(nèi)存的映射,還是會(huì)產(chǎn)生很多碎片。
            獲得連續(xù)的可用內(nèi)存,對(duì)以下情況是有利的:
            當(dāng)內(nèi)存管理器希望能夠最大化CPU高速緩存的效率時(shí),會(huì)采用一種叫做“頁(yè)面染色”(Page Coloring)的機(jī)制,以確定從自由列表(或清零頁(yè)列表)中把哪些內(nèi)存頁(yè)分配給進(jìn)程。
            盡管如此,雖然獲得連續(xù)的可用內(nèi)存,可以獲得一點(diǎn)好處,但是這種好處要以把有用的代碼和數(shù)據(jù)移出內(nèi)存作為代價(jià),是得不償失的。
            盆盆譯注:為了進(jìn)一步了解什么叫做“頁(yè)面染色”機(jī)制,盆盆費(fèi)心在網(wǎng)上搜索不少資料,終于了解到以下的背景資料(經(jīng)過(guò)縮寫(xiě)):
            為了確保在進(jìn)程上下文切換時(shí),CPU高速緩存里的內(nèi)容不受影響,現(xiàn)代CPU的L1 Cache會(huì)對(duì)物理內(nèi)存頁(yè)進(jìn)行緩存,而不是緩存虛擬內(nèi)存頁(yè)(否則的話(huà),上下文切換時(shí),必須刷新緩存中的內(nèi)容,導(dǎo)致緩存性能急劇下降)。這就要求相鄰的虛擬內(nèi)存頁(yè)最好分配相鄰的物理內(nèi)存頁(yè),以獲得最好的L1 Cache性能。
            更具體的內(nèi)容,可以參考
            這篇文檔
             
            最后,軟件開(kāi)發(fā)商宣傳他們的內(nèi)存優(yōu)化工具可以重新獲取因泄漏而丟失的內(nèi)存。這種宣傳可能是最虛假的說(shuō)法。
             
            在所有時(shí)刻,內(nèi)存管理器都知道進(jìn)程所擁有的物理內(nèi)存和虛擬內(nèi)存。然而,如果進(jìn)程分配內(nèi)存,但是由于Bug而無(wú)法釋放內(nèi)存(內(nèi)存泄漏),內(nèi)存管理器就可能無(wú)法了解這些已分配的內(nèi)存無(wú)法重新訪問(wèn),而必須等到進(jìn)程退出時(shí)回收內(nèi)存。 
             
            哪怕產(chǎn)生內(nèi)存泄漏的進(jìn)程無(wú)法退出,內(nèi)存管理器的工作集調(diào)整機(jī)制也會(huì)最終從進(jìn)程的工作集中“盜取”所有的物理頁(yè)(分配給泄漏的虛擬內(nèi)存)。該進(jìn)程會(huì)把泄漏的虛擬頁(yè)發(fā)送到頁(yè)面文件,這樣系統(tǒng)就可以騰出物理內(nèi)存挪作它用。所以對(duì)可用物理內(nèi)存來(lái)說(shuō),內(nèi)存泄漏只有有限的影響。真正的影響在于虛擬內(nèi)存的消耗(在任務(wù)管理器中叫做PF使用率和提交更改,如圖3所示)。沒(méi)有任何工具可以解決這種虛擬內(nèi)存的消耗,除非殺死消耗內(nèi)存的進(jìn)程。
             
            欺詐軟件
             
            筆者(Mark Russinovich)還在尋找能夠?qū)嵺`其承諾的內(nèi)存優(yōu)化工具。如果仔細(xì)查看,我們會(huì)經(jīng)常發(fā)現(xiàn)開(kāi)發(fā)商會(huì)在其網(wǎng)站上隱藏著冗長(zhǎng)的免責(zé)聲明,其中包括本文所述的內(nèi)容—該產(chǎn)品可能對(duì)系統(tǒng)性能沒(méi)有什么影響,甚至可能導(dǎo)致性能下降。甚至無(wú)需知道這些產(chǎn)品是如何借助內(nèi)存管理器來(lái)實(shí)現(xiàn)其具有明顯視覺(jué)效果、具有煽情名字的內(nèi)存管理機(jī)制,只要用正常思維就可以明白如果這種內(nèi)存優(yōu)化機(jī)制是可行的話(huà)(而且那么多三流廠商都可以實(shí)現(xiàn)),微軟的開(kāi)發(fā)工程師早就應(yīng)該在內(nèi)核里實(shí)現(xiàn)這種功能。
            盆盆譯注:說(shuō)實(shí)話(huà),國(guó)外的廠商還算是講點(diǎn)道義,畢竟還提供一些免責(zé)聲明。看看國(guó)內(nèi)的情況,騙子太多了,例如讓人哭笑不得的“智慧星”,還有無(wú)孔不入的抄襲者,不提也罷~~ 
             
            原文信息
             
            本文的英文原版刊發(fā)在2004年一月刊的《Windows IT Pro Magzine》上,地址如下。但是由于該文需要訪問(wèn)權(quán)限,所以盆盆特地將其全文翻譯,共享給大家。
            http://www.windowsitpro.com/Articles/ArticleID/41095/41095.html

            posted on 2011-01-16 12:14 楊粼波 閱讀(2339) 評(píng)論(3)  編輯 收藏 引用

            評(píng)論

            # re: Windows任務(wù)管理器原理+內(nèi)存管理機(jī)密+揭穿內(nèi)存優(yōu)化工具的騙局[未登錄](méi) 2011-01-16 14:33 Zhaoyg

            mark一下  回復(fù)  更多評(píng)論   

            # re: Windows任務(wù)管理器原理+內(nèi)存管理機(jī)密+揭穿內(nèi)存優(yōu)化工具的騙局 2011-02-04 18:57 asd

            bravo  回復(fù)  更多評(píng)論   

            # re: Windows任務(wù)管理器原理+內(nèi)存管理機(jī)密+揭穿內(nèi)存優(yōu)化工具的騙局 2012-07-06 11:09 史密斯

            還是有點(diǎn)復(fù)雜,表示看不懂  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            午夜精品久久久久久影视777| 国产成人精品三上悠亚久久| 亚洲精品乱码久久久久久久久久久久 | 久久AAAA片一区二区| 久久天天躁狠狠躁夜夜2020老熟妇| 久久久综合香蕉尹人综合网| 久久九九兔免费精品6| www.久久热.com| 思思久久99热免费精品6| 亚洲国产精品久久电影欧美| 成人久久综合网| 奇米影视7777久久精品人人爽 | 亚洲精品无码久久久| 色综合久久久久无码专区| 国产精品美女久久久久av爽| 久久伊人精品一区二区三区| 久久亚洲欧美日本精品| 久久国产AVJUST麻豆| 美女写真久久影院| 久久精品国产亚洲AV电影| 老司机午夜网站国内精品久久久久久久久 | 精品久久久久一区二区三区| 久久亚洲春色中文字幕久久久| 久久AⅤ人妻少妇嫩草影院| 97r久久精品国产99国产精| 精品综合久久久久久97| 亚洲国产高清精品线久久| 久久国产精品波多野结衣AV| 2020久久精品国产免费| 久久人人爽人人爽人人AV东京热| 久久婷婷色综合一区二区| 亚洲国产高清精品线久久| 久久久久久国产a免费观看不卡 | 久久国产精品成人片免费| 欧美国产成人久久精品| 久久久久久久精品妇女99| 色播久久人人爽人人爽人人片AV| 伊人 久久 精品| 久久99精品久久久大学生| 亚洲精品无码久久久影院相关影片 | 亚洲精品无码专区久久同性男|