《垃圾回收的算法与实现》是一本由中村成洋 / 相川光著作,人民邮电出版社出版的平装图书,本书定价:99.00元,页数:456,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《垃圾回收的算法与实现》精选点评:
●算法篇+python实现,实现部分讲得不是很贴切,但是有用
●把基本的算法和常见的垃圾回收实现都说了一遍,不错不错!
●读书的时候学过一些 现在自己看依然觉得很难 但是很有意思 很兴奋 ٩( 'ω' )و
●结构清晰,主体写得也浅显。但没有把各个点串在一起。
●不错。算法很重要,虚拟机很流行
●略作了解
●非常好的GC入门书籍
●大致翻了下, 讲的还行.
●作为垃圾回收算法的入门书是很不错。有几个缺点:对应算法都没有提及并发版本。最后选的例子为什么要选rubinius(可能因为java话题太大,go在写书的时候还不成熟吧,本书是2010年出的日文版)。
●前面还好,中间开始有些翻译读起来瞬间出戏关于书的内容,有图解很方便理解~实现篇中,Dalvik虚拟机那部分应该说是跟出书的当时彻底不同了吧。 ------------------- 17.7.24 前面好个毛线。本来还想参考这本书的翻译,从头对着看才发现这译者太扯淡。
《垃圾回收的算法与实现》读后感(一):书籍资源分享
这本书读完之后不得不感叹前人在回收内存上展现的智慧火花,
前半部分是算法篇,标记清除,引用计数,标记压缩,分代回收,增量回收等等,代码,图,文并排很清晰
后半部分是实战,python,android等,稍微复杂一点,但是认真啃下来依旧很精彩!!
我找到了资源,放在微信公众号【小松与蘑菇】中,回复书名就可以拿到啦
《垃圾回收的算法与实现》读后感(二):好书
图很多,可以极快获得gc的conceptual model。
算法篇:通过图和伪码可以快速了解一下算法mark-sweep,mark-copying,mark-compact,generational,incremental,reference counting。保守式gc/准确性gc的概念区别。
之后的实现篇:包含了python,android jvm,v8各个运行时系统的实际选择以及代码细节。
《垃圾回收的算法与实现》读后感(三):垃圾算法入门读物
全书分成算法和实现两个部分。从简单算法讲到复杂的,以丰富的图片解释说明了算法的过程,还是比较容易读的,并且中间会穿插一些GC界论文的related work,还是比较有趣的。但是,对算法的使用场景和对比之前各个算法优缺点大都只是一笔带过,并且真的就是只讲算法,完全脱离算法在实际语言中的运用,最起码应该说明算法中的思想被XXX语言在XXX场景下会用到,不知道作者是没想到还是有所保留,算法部分也真的想把所有论文用大白话描述了一遍而已。
实现篇,讲了python,jvm,ruby,v8的GC实现部分,当然只是把GC相关的代码摘出来,然后旅顺成文即可,在源码分析的文章中算是不错的了,最起码有提要在贴代码,并且只是贴出关键部分的代码。
总体来讲,属于GC的入门读物,可以拿来用来作为GC领域的导论手册,无法达到“圣经”级别。本人也是为了研究Golang的GC机制,才读的此书,接下来要看看https://book.douban.com/subject/26740958/
此书在Golang代码注释中提及,期待ing
《垃圾回收的算法与实现》读后感(四):来谈谈翻译吧
下面纯粹是看书时的碎碎念,可能跟正文内容没多关系,主要都是在说翻译的事。
一开始读的时候还好,后面读着读着越发觉得翻译错误多了起来。最后真受不了,买了原文照着看,边看边吐槽。
前面好几个错误编辑修正了,后面那些至今(16.10.25)没人管【update: 10.26 一下子全确认了~】,那就边看边更新啦:)
下面有些纯粹是觉得译者翻译得「不地道」。比如「不可能到达对象」,基本上说到 GC 的时候都会说是「不可达对象」,还有「型」这种日语里面用来表示「类型」的词直接不翻也是非常奇怪。
把所有的「レベル level」都翻成水准,纯粹就是错了,没见过用 C/Python 来形容水准的。
按照页码的勘误:
231 ,10.7节标题下面一行:“多种多样的型”改为“多种多样的类型”
238,倒数第2行:“然后用PyEval_CallObject()函数评价它”改为“然后用PyEval_CallObject()函数对其进行求值”。
239,10.8.5 「在以C语言的水准对Python…」和 「当以Python的水准写程序的时候」,这两句,原文的「水准」应该都是「レベル」也即 level 吧,这里把它翻成「(技能能力などの)水準」很奇怪。感觉更适合辞典的这个解释「(物事をとらえる)段階, 面; 観点, 見地」,以「在C的层次-层面上」跟「在Python的层次-层面上写程序的时候」或类似的翻译是不是会妥当些?——同样的问题:P258
xxx レベル 这个词真的全部都被翻译成水准了= =
258,「检查合格」-pass,「检查通过」吧。
259,「不可能到达对象」-「不可达对象」
261, 10.10.11「这个函数在开发模式中活用了访问者模式」,原文这里是 「この関数ではデザインパターンにおけるvisitorパターンが活用されています」,无法理解为什么「デザインパターン design pattern 设计模式」这个成熟的词组会被翻译成「开发模式」,「における」在这里是指范围,vistors 是 design pattern 的其中一种,「活用」直接不翻也比较奇怪,日文中这个词有有效利用的意思,中文里「活用」多指灵活应用,有点差异。在自己看来,这里粗糙一点的翻译也应该是「这个函数使用了设计模式中的访问者模式」。
267,把「サンプル sample」跟「シンプル simple」搞混了。。
331,12.1.2 「来检查本章中要解说的码树吧」,原文这里是「本章で解説対象となるコードツリーをチェックアウトしましょう」,「チェックアウト checkout」是版本控制专用术语,一般翻译成 「检出」,「コードツリー code tree」翻成「代码树」自然得多。这句话应该是「来检出本章要解说的代码树吧」 13.1.3 也是检测
341,12.3.4 「负责调查所申请大小的分块在不在用于GC复制算法的内存空间里」。原文这里是:
「enough_space_p()関数では要求されたサイズ(bytes)のチャンクがコピーGC用メモリ空間(Heap)にあるか調べています。」
这里「ある」应该是指堆里面是否「有」这个大小的空间,而不应该是表示存在的「在不在」。下文中的「如果还有空闲空间」也验证了这种说法。能力有限没法直译,但意思上应该接近于「这个函数用于检查GC复制算法的内存空间(Heap)是否足够分配所申请大小(bytes)的分块」。
344,12.4.3 ,最后一段都有问题。其中最后一句「这样一来我们就将 hello_world 函数定义成了 Kernel 类」,原文这里是「この場合、hello_worldという関数をKernelクラス(rb_mKernel)に定義しています」。「Kernelクラス(rb_mKernel)」后面有格助词「に」,表示「在Kernel 类里面」。事实上,rb_define_method 也只是一个往指定的类添加方法的 rb 方法,也不可能把一个函数定义一个类。这里应该是:「这样一来我们就在
Kernel 类里面定义了 hello_world 函数」
364,12.5.4 「第117行」跟「第118行」翻译成了一样内容。实际上,原文是「117行目:参照元のオブジェクトは新世代のものか」跟「118行目:参照先のオブジェクトは新世代のものではないか」,118行是「引用的对象是否为新生代对象?」。写入屏障是记录老年代到新生代对象的操作,117行跟118分别判断发出引用的对象跟引用的对象。
373,12.5.9,「通过传输 Rubinius 的 C++ 源代码,抽出每个对象的类的成员变量」「“RubiniusのC++ソースコードをパースして、各オブジェクトのクラスのメンバ変数を抽出し”」。「パース」这里是「parse」,跟「传输」没有任何关系。「通过解析 Rubinius 的 C++ 源码,提取出每个对象的类的成员变量」
385,13.3.5 「首先把之前在 13.3.3 节中讲过的 HeapObject 类(或子类)的实例分配给 VM Heap。」,「VMヒープには前の「12.3.3 Objectクラス」の項で説明したHeapObjectクラス(もしくはサブクラス)のインスタンスがアロケーションされます。」,不知道这个「首先」是从哪里冒出来的。稍微调整了下顺序之后应该是这样:「之前在 13.3.3 节中讲过的 HeapObject 类(或子类)的实例会被分配在 VM Heap 中」
============
没想到还会有更新的时候,这次从头开始看原文,想参考下中文翻译的时候才发现这译者从头开始就特别特别不靠谱了。
序章,「GC 把程序不用的内存空间视为垃圾」,这里是「使わなくなったメモリ領域のことをゴミと考えます」,这里明显是「内存里不再使用的东西(对象)」,跟「不用的内存」差太多了好吧。
下面的说的 GC 做的两件事,「2. 回收垃圾,让程序员能再次利用这部分空间」,都说 GC 帮程序员解脱了管理内存的重负了,还让程序员再次利用。原文这里可是好好写的「ポログラマ」(program),「ポログラマー」才是 programmer 啊。
17.7.24