垃圾收集

出版時間:1900-01-01  出版社:人民郵電出版社  作者:(美國)瓊斯等著、謝之易譯  譯者:瓊斯  
Tag標簽:無  

內(nèi)容概要

  書圍繞著動態(tài)內(nèi)存自動回收的話題,介紹了垃圾收集機制,詳細分析了各種算法和相關技術?! ”緯?2章。第1章首先介紹計算機存儲器管理的演化和自動內(nèi)存回收的需求,并引入了本書所使用的術語和記法。第2章介紹了3種“經(jīng)典”的垃圾收集技術:引用計數(shù)(reference counting)、標記-清掃(mark-sweep)和節(jié)點復制(copying)。 隨后的4章更詳細地討論了上述這些垃圾收集方式和標記-縮并(mark-compact)收集。第7章和第8章分別介紹了在現(xiàn)代垃圾收集實現(xiàn)中具有重要地位的分代式(generational)垃圾收集和漸進式(incremental)垃圾收集。第9章和第10章擴展了垃圾收集的領域,討論了如何讓垃圾收集能夠在無法得到來自語言編譯器的支持的環(huán)境(分別是C和C++)中運行。第11章討論了一個相對較新的研究領域 -- 垃圾收集和硬件數(shù)據(jù)cache的相互作用。第12章簡要地考察了用于分布式系統(tǒng)的垃圾收集?! ”緯m合對動態(tài)內(nèi)存管理感興趣的讀者閱讀,可供專業(yè)的研究人員參考。

書籍目錄

第1章 簡介	11.1 內(nèi)存分配的歷史	21.1.1 靜態(tài)分配	21.1.2 棧分配	31.1.3 堆分配	31.2 狀態(tài)、存活性和指針可到達性	41.3 顯式堆分配	51.3.1 一個簡單的例子	51.3.2 垃圾	51.3.3 懸掛引用	61.3.4 共享	61.3.5 失敗	61.4 為什么需要垃圾收集	71.4.1 語言的需求	71.4.2 問題的需求	71.4.3 軟件工程的課題	81.4.4 沒有銀彈	91.5 垃圾收集的開銷有多大	111.6 垃圾收集算法比較	111.7 記法	151.7.1 堆	151.7.2 指針和子女	151.7.3 偽代碼	161.8 引文注記	16第2章 經(jīng)典算法	182.1 引用計數(shù)算法	182.1.1 算法	182.1.2 一個例子	202.1.3 引用計數(shù)算法的優(yōu)勢和弱點	212.1.4 環(huán)形數(shù)據(jù)結構	222.2 標記-清掃算法	232.2.1 算法	232.2.2 標記-清掃算法的優(yōu)勢和弱點	252.3 節(jié)點復制算法	262.3.1 算法	272.3.2 一個例子	282.3.3 節(jié)點復制算法的優(yōu)勢和弱點	302.4 比較標記-清掃技術和節(jié)點復制技術	312.5 需要考慮的問題	322.6 引文注記	36第3章 引用計數(shù)	383.1 非遞歸的釋放	383.1.1 算法	383.1.2 延遲釋放的優(yōu)點和代價	393.2 延遲引用計數(shù)	393.2.1 Deutsch-Bobrow算法	403.2.2 一個例子	413.2.3 ZCT溢出	433.2.4 延遲引用計數(shù)的效率	433.3 計數(shù)域大小受限的引用計數(shù)	443.3.1 “粘住的”計數(shù)值	443.3.2 追蹤式收集恢復計數(shù)值	443.3.3 僅有一位的計數(shù)值	453.3.4 恢復獨享信息	463.3.5 “Ought to be two”緩沖區(qū)	473.4 硬件引用計數(shù)	483.5 環(huán)形引用計數(shù)	493.5.1 函數(shù)式程序設計語言	493.5.2 Bobrow的技術	503.5.3 弱指針算法	513.5.4 部分標記-清掃算法	543.6 需要考慮的問題	603.7 引文注記	63第4章 標記-清掃垃圾收集	664.1 與引用計數(shù)技術的比較	664.2 使用標記棧	674.2.1 顯式地使用棧來實現(xiàn)遞歸	674.2.2 最小化棧的深度	684.2.3 棧溢出	704.3 指針反轉	724.3.1 Deutsch-Schorr-Waite算法	734.3.2 可變大小節(jié)點的指針反轉	754.3.3 指針反轉的開銷	754.4 位圖標記	764.5 延遲清掃	784.5.1 Hughes的延遲清掃算法	784.5.2 Boehm-Demers-Weiser清掃器	794.5.3 Zorn的延遲清掃器	814.6 需要考慮的問題	824.7 引文注記	84第5章 標記-縮并垃圾收集	865.1 碎片現(xiàn)象	865.2 縮并的方式	875.3 “雙指針”算法	895.3.1 算法	905.3.2 對“雙指針”算法的分析	915.3.3 可變大小的單元	915.4 Lisp 2算法	925.5 基于表的方法	935.5.1 算法	935.5.2 間斷表	945.5.3 更新指針	955.6 穿線方法	955.6.1 穿線指針	955.6.2 Jonkers的縮并算法	965.6.3 前向指針	975.6.4 后向指針	985.7 需要考慮的問題	995.8 引文注記	101第6章 節(jié)點復制垃圾收集	1036.1 Cheney的節(jié)點復制收集器	1046.1.1 三色抽象	1046.1.2 算法	1056.1.3 一個例子	1066.2 廉價地分配	1096.3 多區(qū)域收集	1106.3.1 靜態(tài)區(qū)域	1116.3.2 大型對象區(qū)域	1116.3.3 漸進的遞增縮并垃圾收集	1116.4 垃圾收集器的效率	1136.5 局部性問題	1146.6 重組策略	1156.6.1 深度優(yōu)先節(jié)點復制與廣度優(yōu)先節(jié)點復制	1166.6.2 不需要棧的遞歸式節(jié)點復制收集	1176.6.3 近似于深度優(yōu)先的節(jié)點復制	1196.6.4 層次分解	1206.6.5 哈希表	1216.7 需要考慮的問題	1226.8 引文注記	124第7章 分代式垃圾收集	1267.1 分代假設	1267.2 分代式垃圾收集	1297.2.1 一個簡單例子	1297.2.2 中斷時間	1317.2.3 次級收集的根集合	1327.2.4 性能	1337.3 提升策略	1347.3.1 多個分代	1347.3.2 提升的閾值	1357.3.3 Standard ML of New Jersey收集器	1367.3.4 自適應提升	1377.4 分代組織和年齡記錄	1407.4.1 每個分代一個半?yún)^(qū)	1407.4.2 創(chuàng)建空間	1407.4.3 記錄年齡	1417.4.4 大型對象區(qū)域	1447.5 分代間指針	1457.5.1 寫攔截器	1457.5.2 入口表	1467.5.3 記憶集	1477.5.4 順序保存緩沖區(qū)	1487.5.5 硬件支持的頁面標記	1497.5.6 虛存系統(tǒng)支持的頁面標記	1507.5.7 卡片標記	1517.5.8 記憶集還是卡片	1537.6 非節(jié)點復制的分代式垃圾收集	1547.7 調(diào)度垃圾收集	1557.7.1 關鍵對象	1567.7.2 成熟對象空間	1577.8 需要考慮的問題	1597.9 引文注記	160第8章 漸進式和并發(fā)垃圾收集	1628.1 同步	1638.2 攔截器方案	1658.3 標記-清掃收集器	1678.3.1 寫攔截器	1678.3.2 新單元	1718.3.3 初始化和終止	1738.3.4 虛存技術	1768.4 并發(fā)引用計數(shù)	1778.5 Baker的算法	1808.5.1 算法	1818.5.2 Baker算法的延遲的界限	1828.5.3 Baker的算法的局限	1828.5.4 Baker算法的變種	1838.5.5 動態(tài)重組	1848.6 Appel-Ellis-Li收集器	1868.6.1 各種改進	1888.6.2 大型對象	1888.6.3 分代	1898.6.4 性能	1898.7 應變復制收集器	1908.7.1 Nettle的應變復制收集器	1908.7.2 Huelsbergen和Larus的收集器	1918.7.3 Doligez-Leroy-Gonthier收集器	1928.8 Baker的工作環(huán)收集器	1948.9 對實時垃圾收集的硬件支持	1968.10 需要考慮的問題	1978.11 引文注記	199第9章 C語言的垃圾收集	2029.1 根不確定收集的一個分類	2039.2 保守式垃圾收集	2059.2.1 分配	2059.2.2 尋找根和指針	2069.2.3 內(nèi)部指針	2099.2.4 保守式垃圾收集的問題	2099.2.5 識別錯誤	2119.2.6 效率	2129.2.7 漸進式、分代式垃圾收集	2149.3 準復制式收集	2159.3.1 堆的布局	2159.3.2 分配	2169.3.3 垃圾收集	2169.3.4 分代式垃圾收集	2189.3.5 無法精確識別的數(shù)據(jù)結構	2189.3.6 準復制式收集的效率	2199.4 優(yōu)化的編譯器是“魔鬼”	2209.5 需要考慮的問題	2239.6 引文注記	224第10章 C++語言的垃圾收集	22610.1 用于面向?qū)ο笳Z言的垃圾收集	22710.2 對C++垃圾收集器的需求	22810.3 在編譯器中還是在庫中	23010.4 保守式垃圾收集	23010.5 準復制式收集器	23110.6 智能指針	23410.6.1 在沒有智能指針類層次的情況下進行轉換	23410.6.2 多重繼承	23510.6.3 不正確的轉換	23510.6.4 某些指針無法“智能化”	23610.6.5 用const和volatile修飾的指針	23610.6.6 智能指針的“泄漏”	23610.6.7 智能指針和引用計數(shù)	23710.6.8 一個簡單的引用計數(shù)指針	23810.6.9 用于靈活的垃圾收集的智能指針	23810.6.10 用于追蹤式垃圾收集的智能指針	24010.7 為支持垃圾收集而修改C++	24110.8 Ellis和Detlefs的建議	24210.9 終結機制	24310.10 需要考慮的問題	24510.11 引文注記	246第11章 垃圾收集與cache	24811.1 現(xiàn)代處理器體系結構	24811.2 cache的體系結構	25011.2.1 cache容量	25011.2.2 放置策略	25111.2.3 寫策略	25211.2.4 特殊的cache指令	25411.3 內(nèi)存訪問的模式	25411.3.1 標記-清掃技術,使用標記位圖和延遲清掃	25411.3.2 節(jié)點復制垃圾收集	25511.3.3 漸進式垃圾收集	25611.3.4 避免讀取	25611.4 改進cache性能的標準方法	25711.4.1 cache的容量	25711.4.2 塊大小	26011.4.3 相聯(lián)度	26011.4.4 特殊指令	26211.4.5 預取	26211.5 失誤率和總體cache性能	26311.6 專用硬件	26511.7 需要考慮的問題	26511.8 引文注記	266第12章 分布式垃圾收集	26812.1 需求	26912.2 虛擬共享存儲器	27012.2.1 共享虛擬存儲器模型	27112.2.2 共享數(shù)據(jù)對象模型	27112.2.3 分布式共享存儲器之上的垃圾收集	27212.3 與分布式垃圾收集有關的課題	27212.3.1 分類原則	27212.3.2 同步	27412.3.3 魯棒性	27412.4 分布式標記-清掃	27512.4.1 Hudak和Keller	27512.4.2 Ali的算法	27712.4.3 Hughes的算法	27712.4.4 Liskov-Ladin算法	27812.4.5 Augusteijn的算法	27812.4.6 Vestal的算法	27812.4.7 Schelvis-Bledoeg算法	27812.4.8 Emerald收集器	27912.4.9 IK收集器	28012.5 分布式節(jié)點復制	28012.6 分布式引用計數(shù)	28112.6.1 Lermen-Maurer協(xié)議	28112.6.2 間接引用計數(shù)	28112.6.3 Mancini-Shrivastava算法	28212.6.4 SPG協(xié)議	28212.6.5 “Garbage collecting the world”	28312.6.6 網(wǎng)絡對象	28312.6.7 帶權引用計數(shù)	28412.6.8 世代引用計數(shù)	28412.7 對actor進行垃圾收集	28512.7.1 Halstead算法	28512.7.2 標記算法	28512.7.3 邏輯上集中式的收集器	28612.8 引文注記	286參考文獻	298術語表	288索引	331算法列表	339

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    垃圾收集 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7