




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、查找并消除大的內(nèi)存占用 發(fā)布日期: 7/23/2004 | 更新日期: 7/23/2004Jon FincherMicrosoft Corporation摘要:Jon Fincher 介紹了有關(guān)在 Windows XP Embedded 設(shè)備上減小內(nèi)存占用和提高運(yùn)行庫(kù)速度的提示、竅門和技術(shù)。歡迎再次閱讀這一有關(guān) Windows XP Embedded 的每月專欄文章(它的名稱越來(lái)越不恰當(dāng))。上一月份的專欄文章沒(méi)有確定最終期限,主要原因在于我當(dāng)時(shí)是在德國(guó)慕尼黑參加 Devcon 歐洲大會(huì)。由于飛機(jī)晚點(diǎn)、時(shí)差以及倉(cāng)促的旅行日程等因素,在我回來(lái)以后,我的生理時(shí)鐘用了四天時(shí)間才恢復(fù)正常。然而,我的確不
2、希望錯(cuò)過(guò)這次環(huán)球旅行 我喜歡到德國(guó)訪問(wèn),并且非常喜愛(ài)這一展覽會(huì)。我所舉辦或參加的所有會(huì)議都吸引了大批客戶,他們都是來(lái)享受免費(fèi)食品以及與 Microsoft 工作人員進(jìn)行自由交流的。我遇到了一些老朋友,結(jié)交了一些新朋友,并且在此期間將我的相機(jī)閃存卡用完了兩三次 我現(xiàn)在正在盼望著明年再次到那里訪問(wèn)。好了,關(guān)于這次旅行的見(jiàn)聞就談這么多。我希望能夠深入研究 Devcon 巡回展覽會(huì)自去年在拉斯維加斯啟動(dòng)以來(lái)涵蓋的一些更多主題。本月,我們將討論內(nèi)存占用的減小,同時(shí)介紹一些提示、竅門和技術(shù),以使您的運(yùn)行庫(kù)盡可能地小(和快速)。讓我們開(kāi)始吧。第一步 遷移到 SP1如果您要嘗試減小內(nèi)存占用,則第一步是升級(jí)到
3、Microsoft Windows XP Embedded with Service Pack 1。因?yàn)槲覀円恢痹?Windows XP Embedded with SP1 上工作,所以我們總是在竭力避免發(fā)生組件膨脹的情況。雖然我們首先關(guān)注的問(wèn)題現(xiàn)在和將來(lái)都與功能有關(guān),但我們也致力于使組件大小盡可能保持最小。事實(shí)上,我們發(fā)現(xiàn)所有組件的內(nèi)存占用大小平均減小了 4.9 MB。與通過(guò)原始 Windows XP Embedded 工具和數(shù)據(jù)庫(kù)運(yùn)行的相同配置比較,帶有 Microsoft Internet Explorer、Windows Media Player 和 MSN Messenger 的 M
4、inlogon 配置表明在運(yùn)行庫(kù)大小方面減小了 9 MB。我們所提供的數(shù)字是公平的 我們對(duì)每種方案都使用了標(biāo)準(zhǔn)的硬件配置文件,并對(duì)每種方案使用了相同的設(shè)置,包括將映像放在壓縮的 NTFS 卷上。返回頁(yè)首第二步 改變觀察問(wèn)題的角度事實(shí)上,減小內(nèi)存占用的最復(fù)雜且最難成功的方法之一是我們的客戶最經(jīng)常使用的方法。該方法有幾個(gè)方面: 向給定的配置中添加一切內(nèi)容(因?yàn)槟⒉恢滥赡苄枰裁矗?,然后努力刪除沒(méi)有用的內(nèi)容。 如果您的設(shè)備實(shí)際上將您的應(yīng)用程序顯示為自定義外殼程序,則在配置中包括一個(gè)外殼程序。 從導(dǎo)出自測(cè)試計(jì)算機(jī)的完整 PMQ 開(kāi)始,包含與它發(fā)現(xiàn)的所有設(shè)備對(duì)應(yīng)的條目,而無(wú)論它是否將存在于最終的設(shè)
5、備上。 包括組件化的(或安裝在設(shè)備上的)應(yīng)用程序,并包括每個(gè)選項(xiàng)以確保安全。 我喜歡將最后一個(gè)方法稱為“雕刻大象”,就像笑話中所說(shuō)的:“如何雕刻大象的雕像?拿一塊大木頭,然后切掉所有不像大象的部分。”任何曾經(jīng)采用這一方法的人都知道,這會(huì)直接導(dǎo)致頭發(fā)過(guò)早脫落、Pepto Bismol 的股票價(jià)值猛漲(因?yàn)槟枰委煗儯┮约疤辔赐瓿傻哪绢^大象雕像。嘗試在進(jìn)行完整的依賴性檢查之后修剪映像,類似于試圖在將雞蛋攪成糊后從蛋糊中向外挑揀蛋殼。您刪除了一個(gè)組件,然后又由于依賴性檢查需要該組件使得您重新安裝它。您試圖關(guān)閉自動(dòng)解析,然后開(kāi)始回答幾百個(gè)有關(guān)您需要哪個(gè)組件的問(wèn)題 并且您在一行中就要這么做五到十次
6、。最終您找到了一個(gè)要?jiǎng)h除的父組件,但是發(fā)現(xiàn)內(nèi)存占用的減小量趕不上它的增長(zhǎng)量,因?yàn)樵斐闪斯铝⒔M件。要生成小型運(yùn)行庫(kù),最好的方法是從相反方向開(kāi)始:不是雕刻大象,而是使用粘土塑造大象。返回頁(yè)首從小到大,逐步完成使您的運(yùn)行庫(kù)變得更小的第一個(gè)重要竅門是,從您可以在您的設(shè)備上正常使用的最小運(yùn)行庫(kù)開(kāi)始。這意味著獲得可啟動(dòng)系統(tǒng)所需的最少數(shù)量的硬件,以及確保您的設(shè)備正常工作的最少量的功能。要獲得盡可能小的硬件內(nèi)存占用,將必須修剪由 TAP.EXE 生成的 PMQ。我總是建議使用 TAP.EXE 而不是 TA.EXE,因?yàn)槭褂?TAP.EXE 生成的 PMQ 時(shí),您幾乎總能確保擁有有效的配置。TA.EXE 生成的
7、 PMQ 通常不會(huì)產(chǎn)生無(wú)法完成重要工作的可啟動(dòng)系統(tǒng)。在生成 PMQ(在 Windows 2000、Windows XP 或 WinPE 環(huán)境下)之后,就可以打開(kāi)組件設(shè)計(jì)器,并將 PMQ 導(dǎo)入到新的硬件組件中。請(qǐng)將硬件組件的原型設(shè)置為“Selector Prototype Component”。現(xiàn)在,您可以著手在該硬件組件中刪除依賴項(xiàng)。通常,您可以安全地刪除下列設(shè)備: 音頻組件和編碼解碼器。 視頻捕獲和顯示組件。 打印機(jī)。 軟盤。 返回頁(yè)首它只有一個(gè)按鈕,并且我們?cè)谒x廠之前按下了這個(gè)按鈕(含糊的 Dilbert 引用,為法律所要求 我必須將其包括于此。)如果您無(wú)法在您的設(shè)備上運(yùn)行 TAP.EX
8、E,則您將有一些工作需要完成。您需要識(shí)別將要使用的設(shè)備中的所有硬件,并且手動(dòng)為所有硬件添加驅(qū)動(dòng)程序。盡管這對(duì)于網(wǎng)絡(luò)適配器、視頻卡甚至芯片組可能不是太困難,但某些設(shè)備卻很難跟蹤。您可能遇到的最糟糕的情形是,當(dāng)您試圖啟動(dòng)您認(rèn)為完整的運(yùn)行庫(kù)時(shí),得到的卻是藍(lán)屏。那么,現(xiàn)在該怎么辦呢?您可以將我們的預(yù)定義基本配置之一作為起點(diǎn),這些基本配置列在“Software:Test & Development”下面的組件瀏覽器中。這些示例宏可以啟動(dòng)所有能夠啟動(dòng) Windows XP 的可用硬件中的 99%,并且是很好的設(shè)備開(kāi)發(fā)通用起點(diǎn)。使用這些宏的方法是:將它們添加到配置中,根據(jù)需要調(diào)整設(shè)置,然后生成和啟動(dòng)
9、。您應(yīng)該發(fā)現(xiàn),映像在多數(shù)設(shè)備上都能夠啟動(dòng),并且您將擁有某種可以作為起點(diǎn)的東西。最可貴的是,運(yùn)行庫(kù)以很小的規(guī)模啟動(dòng)。返回頁(yè)首Win-Min 情況您將注意到的一件事情是,有兩個(gè)類似的示例宏組件 一個(gè)名為 Minlogon Sample Macro,另一個(gè)名為 WinLogon Sample Macro。二者之間的根本區(qū)別是(一個(gè)具有 WinLogon,另一個(gè)具有 MinLogon),但也是深刻的。 當(dāng)我們開(kāi)始開(kāi)發(fā) Windows XP Embedded 時(shí),我們注意到 winlogon.exe 具有許多靜態(tài)和延遲加載依賴項(xiàng),尤其是對(duì)于各種安全性 DLL。僅僅讓計(jì)算機(jī)以其應(yīng)該具有的方式登錄(即使沒(méi)有
10、外部網(wǎng)絡(luò)連接)也會(huì)嚴(yán)重地消耗一些內(nèi)存占用空間。我們決定對(duì) winlogon.exe 進(jìn)行少量修改,并得到了 minlogon.exe。它的靜態(tài)和延遲加載依賴項(xiàng)大大減少,從而降低了內(nèi)存占用的消耗,但它存在一個(gè)棘手的問(wèn)題。MinLogon 的問(wèn)題在于我們不再作為用戶登錄計(jì)算機(jī)。所有功能都在本地系統(tǒng)帳戶(Windows XP 中內(nèi)置的一個(gè)預(yù)定義帳戶)的上下文中運(yùn)行。本地系統(tǒng)可以訪問(wèn)系統(tǒng)中的所有內(nèi)容(我是說(shuō)“所有內(nèi)容”),因此運(yùn)行應(yīng)用程序或者配置系統(tǒng)都不是問(wèn)題。但是,因?yàn)椴淮嬖谟脩魩簦ㄉ踔翛](méi)有 Administrator),MinLogon 系統(tǒng)中缺少所有與用戶相關(guān)的內(nèi)容。應(yīng)用程序中任何依賴于當(dāng)前用
11、戶上下文的行為都可能將無(wú)法按預(yù)期方式工作。返回頁(yè)首配置!配置!配置房地產(chǎn)行業(yè)的首要規(guī)則是位置!位置!位置。節(jié)約存儲(chǔ)財(cái)產(chǎn)(即減小內(nèi)存占用大?。┑氖滓?guī)則是配置!配置!配置。對(duì),這將是一個(gè)比較冗長(zhǎng)的話題,但請(qǐng)繼續(xù)聽(tīng)我說(shuō)下去。Windows XP Embedded with SP1 隨附的大多數(shù)宏組件都具有一些設(shè)置,您可以對(duì)其進(jìn)行配置以包括或刪除這些組件所依賴的特定組件。通過(guò)檢查這些宏的設(shè)置,您通常可以找到一兩個(gè)不需要的依賴項(xiàng)。返回頁(yè)首占用大量?jī)?nèi)存的組件一覽在組件數(shù)據(jù)庫(kù)中有一些導(dǎo)致大量?jī)?nèi)存占用的組件。這些組件是: Explorer 外殼程序 Internet Explorer .NET框架 正像前面
12、所提到的,生成您自己的外殼程序組件有助于將 Explorer 外殼程序置于配置外部,并使運(yùn)行庫(kù)保持較小的大小。.Net 框架目前是一個(gè)整體式組件 也就是說(shuō),所有東西都在它的內(nèi)部,沒(méi)有方法對(duì)其進(jìn)行配置以便只獲得它的某些部分。我們正在致力于解決這一問(wèn)題,但是現(xiàn)在,如果您需要 .Net 支持,您還將占用較大的內(nèi)存。Internet Explorer 可能是最難除去的內(nèi)容,只是因?yàn)橛心敲炊嗟膬?nèi)容依賴于它或它的某些部分。例如,我曾經(jīng)嘗試分析在 Windows XP Embedded 運(yùn)行庫(kù)上運(yùn)行標(biāo)準(zhǔn) Windows XP QFE 安裝軟件包所需要的依賴項(xiàng)。我發(fā)現(xiàn)我需要添加大約 120 MB 的額外組件以
13、支持 200 KB QFE 的安裝。原因是對(duì)一個(gè) DLL 的一個(gè)函數(shù)進(jìn)行了調(diào)用,而該 DLL 是依賴于 Internet Explorer 的“幫助和支持服務(wù)”組件的一部分。下面列出那些將直接引入 Internet Explorer 的組件,供您參考: .NET 框架 R1507。 幫助和支持服務(wù) R1507。 HTML 生成引擎 R1507。 IMAPI - CD 燒錄 R1507。 Internet 連接向?qū)?R1507。 Internet Explorer(附加支持)R1507。Internet Explorer R1507。 Internet Explorer 組策略支持 R1507。
14、 Internet Explorer 幫助文件 R620。 Internet Explorer 技術(shù) R1507。 Microsoft Vector Graphics Rendering (VML R1507。MSN Explorer R1507。 Outlook Express R1507。 Shell 命名空間擴(kuò)展 R1507。 Soap 客戶端運(yùn)行庫(kù) R620。 Windows .NET 消息管理 R1507。 Windows Media Player 8.0 R1507。 Windows Update Automatic Updates R1507。 Windows Update Ba
15、se R1507。 Windows Update Shortcut R1507。 向您的運(yùn)行庫(kù)中添加上述任何組件都會(huì)自動(dòng)引入 Internet Explorer,后者將導(dǎo)致某種嚴(yán)重的內(nèi)存膨脹。如果您可以避免使用這些組件,您應(yīng)該完全能夠防止 Internet Explorer 擴(kuò)大您的內(nèi)存占用量。返回頁(yè)首越小越快減小內(nèi)存占用量所帶來(lái)的一個(gè)不太明顯的優(yōu)點(diǎn)是設(shè)備的性能會(huì)相應(yīng)提高。但是,這一點(diǎn)并非那么難以觀察到 內(nèi)存占用量較小的運(yùn)行庫(kù)將加載較少的驅(qū)動(dòng)程序、設(shè)備和服務(wù),而這將占用較少的資源,從而意味著您的應(yīng)用程序等將可以使用更多的資源。盡管如此,需要向您提出一些警告。如果您的磁盤驅(qū)動(dòng)器是舊式的并且速度較
16、慢,則較小的內(nèi)存占用量不會(huì)提供太多的幫助。無(wú)論映像或其媒體的大小如何,在 BIOS 和硬件檢查完成之前,運(yùn)行庫(kù)都不會(huì)產(chǎn)生影響。而且,無(wú)論映像多么小,仍然需要花費(fèi)一些時(shí)間來(lái)將您的自定義應(yīng)用程序加載到內(nèi)存中。軟件只能為您做這么多。某些能夠提高性能的方法也有助于使您的運(yùn)行庫(kù)變得小一些。請(qǐng)使用 MinLogon 而不是 WinLogon,因?yàn)?MinLogon 會(huì)加載較少的系統(tǒng)服務(wù),并且已經(jīng)表明能夠使啟動(dòng)時(shí)間縮短將近十秒。將您的應(yīng)用程序作為自定義外殼程序加載,因?yàn)槟恍枰虞d一個(gè)而不是兩個(gè)應(yīng)用程序。使您的運(yùn)行庫(kù)中的設(shè)備盡可能地少,因?yàn)榧虞d和初始化驅(qū)動(dòng)程序需要消耗時(shí)間和資源。返回頁(yè)首您是否感到一絲困倦?
17、是嗎?好的,您不需要說(shuō)出來(lái) 我的文章是很好的催眠藥。我知道這一點(diǎn),不需要提醒我。 1 080 既然我們已經(jīng)非常舒服地睡了一覺(jué),現(xiàn)在讓我們討論一個(gè)與提高啟動(dòng)速度不同的、更加難以理解的方案,即根本不啟動(dòng) 更準(zhǔn)確地說(shuō),只啟動(dòng)一次,并且使用 ACPI Sleep 模式 (S3 來(lái)控制設(shè)備?;驹O(shè)置如下所述:在設(shè)備上安置一個(gè)主電源按鈕,以控制設(shè)備電源。請(qǐng)將其安置在不起眼的位置,例如設(shè)備的背面,并標(biāo)以紅色醒目告示:“Warning:Lark's Vomit”。(不必要的 Monty Python 引用,添加于此是為了符合聯(lián)合國(guó)決議。)然后,在設(shè)備的正面安置一個(gè)按鈕,用來(lái)觸發(fā)設(shè)備 ACPI
18、 BIOS 以使該設(shè)備進(jìn)入 Sleep 模式。為您的用戶記錄下這些開(kāi)關(guān)?,F(xiàn)在,您就擁有了一臺(tái)能夠快速關(guān)閉(通過(guò)進(jìn)入 Sleep 模式)并且在第二次以及以后任何時(shí)候都能非??焖俚貑?dòng)(通過(guò)從 Sleep 模式中蘇醒)的計(jì)算機(jī)。顯然,這一解決方案需要設(shè)備中有 ACPI BIOS,并且可能需要設(shè)計(jì)第二個(gè)電源按鈕,但幾乎不需要完成其他工作。因?yàn)樵?ACPI 電源狀態(tài)中不涉及系統(tǒng)安全性,該解決方案將適用于 MinLogon 運(yùn)行庫(kù)。ACPI 本身具有最小的依賴項(xiàng)集,因此它不會(huì)使您的內(nèi)存占用量膨脹。并且,如果您是從閃存啟動(dòng),則借助于它的近似于零的延遲,您將不必花時(shí)間等待媒體旋轉(zhuǎn)加速。返回頁(yè)首但是,如果您的
19、要求較高,該怎么辦呢? 如果您需要將您的計(jì)算機(jī)完全與外部電源斷開(kāi),或者節(jié)約電池電源,則可以使用相同的設(shè)置,但需要進(jìn)入 ACPI Hibernate (S4 模式而不是 Sleep 模式。它的管理難度要更大一點(diǎn)兒,但仍然可以做到。 Hibernate 要求系統(tǒng)安全性處于活動(dòng)狀態(tài)并運(yùn)行,因此您不能使用 MinLogon 。除非您希望用戶在每次通電時(shí)都登錄(在 headless 或沒(méi)有鍵盤的設(shè)備上應(yīng)該很有趣),否則,您還必須添加并配置自動(dòng)登錄功能。在啟動(dòng)驅(qū)動(dòng)器的根目錄,還需要有足夠的可用空間,以便在 hiberfil.sys 中保存完整的系統(tǒng)狀態(tài)。然而,如果您能夠滿足這一條件,則您不僅可以實(shí)現(xiàn)相應(yīng)的關(guān)閉機(jī)制,同時(shí)還能夠快速且容易地啟動(dòng)。 60 返回頁(yè)首 診斷一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家用電器進(jìn)銷存管理平臺(tái)建設(shè)協(xié)議
- 農(nóng)村合作社農(nóng)機(jī)具共享與使用協(xié)議
- 工程勞務(wù)承包居間合同
- 漁業(yè)合作捕撈及銷售合同
- 《2025建筑工程施工承包合同》
- 2025求職簽約需謹(jǐn)慎 勞動(dòng)合同不可或缺綜合指導(dǎo)
- 2025關(guān)于租賃合同與購(gòu)買合同的區(qū)別
- 2025企業(yè)管理資料貨物采購(gòu)合同樣本(000)文檔范本
- 國(guó)際友好交流課件
- 行政管理中的信息化公文處理探索試題及答案
- 2025年貴州盤江精煤股份有限公司招聘筆試參考題庫(kù)含答案解析
- 2024年中考數(shù)學(xué)復(fù)習(xí):中點(diǎn)模型專項(xiàng)練習(xí)
- 旅行社企業(yè)章程范本
- 2025年寧波余姚市直屬企業(yè)招招聘筆試參考題庫(kù)含答案解析
- 《心理健康測(cè)試》課件
- 輸變電工程監(jiān)督檢查標(biāo)準(zhǔn)化清單-質(zhì)監(jiān)站檢查
- GB/T 26718-2024城市軌道交通安全防范系統(tǒng)技術(shù)要求
- 《心房顫動(dòng)》課件
- 靜脈輸液操作考試流程
- 校園藝術(shù)團(tuán)指導(dǎo)教師聘用合同
- 護(hù)理記錄與交班制度
評(píng)論
0/150
提交評(píng)論