高性能健壯系統(tǒng)中的內(nèi)存管理_第1頁(yè)
高性能健壯系統(tǒng)中的內(nèi)存管理_第2頁(yè)
高性能健壯系統(tǒng)中的內(nèi)存管理_第3頁(yè)
高性能健壯系統(tǒng)中的內(nèi)存管理_第4頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、高性能健壯系統(tǒng)中的內(nèi)存管理 合理的內(nèi)存管理策略帶來(lái) 系統(tǒng)性能的提高 更高的運(yùn)行速度 更小的內(nèi)存占用 穩(wěn)定的內(nèi)存使用量 讓系統(tǒng)更健壯 減少因系統(tǒng)設(shè)計(jì)規(guī)模的擴(kuò)大而帶來(lái)的負(fù)作用 易于調(diào)試 減少編碼失誤率 控制 bug 的壞影響的范圍 讓系統(tǒng)可以長(zhǎng)期不間斷的工作內(nèi)存是最難管理的資源 內(nèi)存作為一種資源,在應(yīng)用級(jí)和系統(tǒng)底層工作是兩種不同的模式。 應(yīng)用級(jí):我們看到的是連續(xù)的虛擬地址空間 系統(tǒng)級(jí):是分塊的內(nèi)存頁(yè) 內(nèi)存缺乏原子性、不能用簡(jiǎn)單的引用記數(shù)方式管理。 在傳統(tǒng)軟件中、內(nèi)存碎片幾乎一定會(huì)產(chǎn)生。 從性能角度看,內(nèi)存并非像程序員們想象的那樣有一致性。 性能敏感的軟件或?qū)崟r(shí)系統(tǒng),內(nèi)存管理有更苛刻的要求。性能 無(wú)

2、論語(yǔ)言多高級(jí),在你使用的語(yǔ)言層面總有事情可以做。 編譯器并非萬(wàn)能 人有機(jī)會(huì)比優(yōu)化器做的更好深入RAM硬件底層 抽象與細(xì)節(jié)的矛盾 抽象是為了設(shè)計(jì)更大的系統(tǒng) 細(xì)節(jié)是為了更高性能的工作 CRTOS虛擬內(nèi)存地址物理內(nèi)存地址BIOS Cache儲(chǔ)存控制芯片DRAM DRAM 是晶體管和電容構(gòu)成的二維電路 Cache 使用 SRAM ,可以工作在更高頻率下 控制芯片以串行模式工作 RAM 性能的提高并非無(wú)差別的結(jié)論?沒(méi)有永遠(yuǎn)不變的原則 大原則變化的慢 沒(méi)有一勞永逸的解決方案內(nèi)存訪問(wèn)很廉價(jià)但有代價(jià) 減少內(nèi)存訪問(wèn)的次數(shù)是很有意義的隨機(jī)訪問(wèn)內(nèi)存慢于順序訪問(wèn)內(nèi)存 請(qǐng)讓數(shù)據(jù)物理上連續(xù)集中內(nèi)存訪問(wèn)優(yōu)于分散訪問(wèn) 盡可能

3、的將數(shù)據(jù)緊密的存放在一起無(wú)關(guān)性內(nèi)存訪問(wèn)優(yōu)于相關(guān)性內(nèi)存訪問(wèn) 請(qǐng)考慮并行的可能性、即使你的程序本身沒(méi)有使用并行機(jī)制控制周期性密集訪問(wèn)的數(shù)據(jù)大小 必要時(shí)采用時(shí)間換空間的方法讀內(nèi)存快于寫(xiě)內(nèi)存代碼也會(huì)占用內(nèi)存,所以、保持代碼的簡(jiǎn)潔關(guān)于優(yōu)化的參考 X86 平臺(tái),Agner Fog 是絕對(duì)的權(quán)威。 如何優(yōu)化 Pentium 微處理器 代碼優(yōu)化:有效使用內(nèi)存 深入理解計(jì)算機(jī)系統(tǒng)深入理解計(jì)算機(jī)系統(tǒng) 制定合理的內(nèi)存管理策略 了解你的系統(tǒng)如何使用內(nèi)存 系統(tǒng)中各種對(duì)象有怎樣的生命期? 峰值時(shí)系統(tǒng)需要多少內(nèi)存?這個(gè)值因何而變? 系統(tǒng)穩(wěn)定工作的時(shí)候,需要多少內(nèi)存?那些對(duì)象需要?哪些內(nèi)存需求是穩(wěn)定不變的,哪些是動(dòng)態(tài)增減的?

4、 手工管理內(nèi)存和自動(dòng)管理內(nèi)存(gc)都不是萬(wàn)能的。 適當(dāng)?shù)臅r(shí)候引入 gc 或近似的機(jī)制不變的內(nèi)存需求 各施其責(zé)、讓操作系統(tǒng)幫助你更好的解決問(wèn)題 只申請(qǐng)不(主動(dòng))釋放并非壞習(xí)慣 內(nèi)存塊不是原子對(duì)象,即使你還給了系統(tǒng),系統(tǒng)也未必可以利用它們 Bug 經(jīng)常出在程序退出時(shí),可用戶在意它們嗎?你真的需要在意嗎? C+ 帶來(lái)的錯(cuò)覺(jué):令人困擾的單件生命期問(wèn)題。 模塊化設(shè)計(jì)的問(wèn)題 動(dòng)態(tài)鏈接庫(kù)和獨(dú)立進(jìn)程服務(wù)生命期可預(yù)期的內(nèi)存需求 內(nèi)存塊的生命期決定于一個(gè)特定對(duì)象或一個(gè)特定事件 Web server 中、大部分對(duì)象跟連接相關(guān) Game server 中、大部分對(duì)象跟獨(dú)立玩家相關(guān) 3d engine 中、大部分對(duì)象

5、跟 3d 實(shí)體相關(guān) 偶爾、復(fù)制好過(guò)引用 成批的分層次回收內(nèi)存有利于減少內(nèi)存碎片 把相關(guān)的數(shù)據(jù)結(jié)構(gòu)盡可能的物理上保持連續(xù) 不同層次的對(duì)象引用的內(nèi)存在設(shè)計(jì)上分離可再生的內(nèi)存數(shù)據(jù) 3d engine 中的資源管理 一切內(nèi)部資源加載后不再刪除其資源 handle 任何資源皆可再生(往往指從外存重新加載) 資源占用的內(nèi)存的回收和再利用和邏輯層無(wú)關(guān) 資源的預(yù)讀及并行化處理流程于主邏輯正交設(shè)計(jì) 顯存對(duì)象是不同類型的內(nèi)存數(shù)據(jù)、應(yīng)獨(dú)立管理臨時(shí)內(nèi)存 程序運(yùn)行棧 用堆模擬一個(gè)棧 關(guān)于 C+ 的 auto_ptr 關(guān)于 C+ 的容器:vector list map 異常的處理: C+ 異常 longjmpString

6、 的管理 String 類有多重要? std:string ? CString ? boost:rope ? Copy on Write 是天使還是惡魔? 為什么不用 const char * ? 通常,我們只需要 raw pointer const char * 往往只是一個(gè) handle ,一個(gè)可以比較和排序的 handle 忘了寬字節(jié)吧,UTF-8 可以解決大部分問(wèn)題 沒(méi)有完美的 string 類,如果你認(rèn)為你設(shè)計(jì)出了一個(gè),那么你一定忘掉了要用它做什么。垃圾收集(GC) C/C+ 需要 GC 嗎? 自動(dòng)化內(nèi)存管理無(wú)處不在。 手工寫(xiě)出了每一個(gè) new/delete malloc/free 并不意味著你在手工管理 引用計(jì)數(shù)同樣是一種自動(dòng)化管理 GUI 、3d 場(chǎng)景管理不可能離開(kāi)自動(dòng)化內(nèi)存管理 Mark-sweep GC 的優(yōu)勢(shì) 使用 gc 并不意味著偷懶,通常是因?yàn)榱己玫脑O(shè)計(jì)的需要 gc 不等于低

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論