官术网_书友最值得收藏!

審校者前言

計算機的進步,特別是硬件的發展之快總是讓我們感到驚訝。在這波不斷向前涌動的洪流中,技術領域的浮沉也愈發激烈。本書涉及的垃圾回收(Garbage Collection, GC)與其說是理論,其實更偏向技術層面,然而它卻有著令人吃驚的漫長歷史。GC在計算機發展的激流中沒有浮起,也沒有沉下。直到1995年Java發布,因為其內藏GC,人們才開始意識到GC的作用。

追溯Lisp語言的秘史我們會發現,GC這種讓已經無法利用的內存實現自動再利用(可能稱為“內存資源回收”更恰當)的技術,是于Lisp的設計開始約1年后,也就是1959年的夏天首次出現的。實現GC的是一個叫D. Edwards的人。至今已經經過了50多年的漫長歲月。

這期間人們進行了海量的研究和開發,與其相關的論文也堆積如山。這么說來,我也寫過幾篇關于GC的論文。然而讓我吃驚的是,這么久以來竟然沒有一本關于GC的教科書或專業書籍。英語界曾于1996年首次針對GC出版了一本Garbage Collection(Richard E. Jones、Rafael D. Lins著),這是37年來在GC領域的一次破天荒的壯舉,本書也將其作為了參考文獻。然而在日本,本書可以說是第一本用日語寫的GC專業圖書,可謂五十年磨一劍,在此也對年輕有為的二位作者致以深深的敬意。

如果看看某本教科書中的一節或者讀讀幾篇論文就能明白GC是什么東西,那么或許就不需要這本書了,但GC并沒有那么簡單。在學習或工作中不得不使用GC的人,首先就必須看兩三篇有名的論文,之后還要去研究那些可能與其有關的原著。也就是說,從某種意義上而言,最后還是需要自己去想很多東西。

盡管如此,還是有許多真心喜歡編程的人士,他們之中有一大群叫作GCLover的人。因為GC基本上沒有什么教科書,所以這群人之間似乎有著一種地下組織般的團隊意識??偠灾?,對他們來說,GC是個非常有意思、充滿樂趣的程序。你讀過本書后就會明白,GC算法會根據自動內存回收所需的環境(機器、語言、應用等)的不同而不同。到具體的程序層面,GC則為程序員提供了一個最佳的游樂場所,令其盡情地發揮編程技巧,大展身手。事實上我也屬于長年樂在其中的一份子。GC這東西很麻煩,但卻是必需的。它就像一個幕后英雄,默默地做著貢獻,用戶并不會期待它變得顯眼。但因為它進行的是幕后工作,所以編程老手們或許會為之心動。

如上所述,因為Java的出現,人們開始普遍認識到GC的可貴,自此多數的腳本語言都具備了GC??吹竭@種情形,我這個跟GC拉拉扯扯了近40年的人真是感慨萬千。雖然沒有什么切實的根據,但是我一直認為,具備GC的語言要比不具備GC的同等語言生產效率高百分之三十。

既然話說到這里了,我就再介紹一下我的個人看法吧。實際上,GC相當于虛擬內存。一般的虛擬內存技術是在較小的物理內存的基礎上,利用輔助存儲創造一片看上去很大的“虛擬”地址空間。也就是說,GC是擴大內存空間的技術,因此我稱其為空間性虛擬存儲。這樣一來,GC就成了永久提供一次性存儲空間的時間軸方向的時間性虛擬存儲。神奇的是,比起稱為“垃圾回收”,把GC稱為“虛擬內存”令人感覺其重要了許多。當初人們根據計算機體系結構開發了許多關于空間性虛擬存儲的支持,所以大部分的計算機都標配了空間性虛擬存儲。只要硬件支持,GC性能就能穩步提升,然而現實情況是幾乎沒有支持GC的硬件,這不能不令人感到遺憾。

要說本書與涵蓋面較廣的Garbage Collection有什么不同,那就是本書涉及的面不那么廣,但“算法篇”中對GC的基礎內容進行了詳實的講解。另外,“實現篇”是本書的一大特色,其中解讀了實際的GC代碼。總體而言,本書作為一本教科書有著教育和現實意義。我作為本書審校者,全方位檢查、琢磨了書中的內容,擔保這是一本通俗易懂的書。我深信,本書作為一本GC專業圖書,能讓讀者了解到GC是何物,體味到它的有趣之處以及它的重要性。

如果能讓更多讀者了解到GC的重要性,那么由硬件和OS支持GC的真的時間性虛擬存儲總有一天會實現吧。這就是我發自肺腑想說的話。開拓新技術的原石正在滾滾前進哦!

東京大學情報理工學系研究科教授 竹內郁雄

2010年2月


注意

1.本書是作者個人的研究成果。

2.本書內容已經過嚴格的審查和勘誤,如發現內容缺失、錯誤等,請以書面形式聯絡出版方。

3.關于運用本書內容所造成的任何結果,作譯者及出版社不承擔與上述兩項無關的責任,敬請諒解。

4.未經出版方書面許可,不得擅自盜印本書內容。


關于商標

·本書中省略了?、?、?等符號,敬請諒解。

·關于本書中涉及的程序名稱、系統名稱及CPU名稱等,書中一律使用其最常用的稱呼。

·一般情況下,本書中使用的程序名稱、系統名稱及CPU名稱等為各公司的商標或注冊商標。

主站蜘蛛池模板: 仁怀市| 桐柏县| 华容县| 武胜县| 沧源| 永嘉县| 那坡县| 璧山县| 日喀则市| 信阳市| 茌平县| 武功县| 馆陶县| 屯留县| 沈阳市| 剑川县| 广宗县| 阳朔县| 井冈山市| 安陆市| 微博| 当雄县| 金坛市| 乌鲁木齐市| 图木舒克市| 临武县| 黔江区| 大厂| 姜堰市| 泰来县| 江北区| 宁安市| 天水市| 漳平市| 土默特左旗| 宁陵县| 昭觉县| 开远市| 吴江市| 攀枝花市| 博爱县|