2 ポイント 投稿者 GN⁺ 2025-12-24 | 1件のコメント | WhatsAppで共有
  • 自動メモリ管理の原理を体系的に扱う技術書で、最新のハードウェアおよびソフトウェア環境におけるガベージコレクション・アルゴリズムを包括的に説明
  • 1996年版と2012年版に続いて刊行された第2版で、過去60年間に蓄積された研究と開発の成果を統合
  • 並列、インクリメンタル、並行、リアルタイム収集などの最新の高性能コレクタ技法を含み、擬似コードと図でアルゴリズムを具体的に提示
  • 永続性(persistence)およびエネルギー認識型収集を扱う新しい章が追加され、3,400本以上の関連論文データベースと連携
  • 現代のプログラミング言語の大半がガベージコレクションを採用している状況で、開発者が適切なコレクタの選択と構成を理解するために不可欠な参考書

第2版の概要

  • 1996年版 Garbage Collection と2012年版 The Garbage Collection Handbook の後継として、自動メモリ管理分野の最新状況を反映
    • 技術の進歩によってメモリ管理がさらに複雑かつ重要になった点を反映
    • 過去60年間に研究者と開発者が蓄積した知識を、ひとつのアクセスしやすい枠組みに統合
  • ハードウェア・ソフトウェアの進歩がガベージコレクションに突きつけた新たな課題を扱う
    • プログラム実行環境の変化が高性能コレクタの設計者と実装者に与える影響を探究
    • 単純で伝統的なアルゴリズムだけでなく、並列、インクリメンタル、並行、リアルタイム収集も含む
    • アルゴリズムと概念は擬似コードと図で説明

本書の主な特徴

  • 1996年版および2012年版の完全で最新の後継書を提供
  • 並列・並行・リアルタイム収集アルゴリズムを包括的に扱う
  • 商用高性能コレクタの動作を詳細に説明
  • ランタイムシステムとの複雑なインターフェースの問題を扱う
  • 90ページ以上を追加し、永続性とエネルギー認識型収集に関する新規章を収録
  • 3,400本の関連論文データベースと連携

電子書籍および翻訳版

  • 電子書籍は印刷版より拡張された形で、37,000件以上のハイパーリンクを含む
    • 章、節、アルゴリズム、図、用語集、索引、研究論文などへリンク
  • 2016年に中国語版および日本語版が刊行され、読者層を拡大

ウェブリソース

  • オンラインの書誌データベースには約3,400本のガベージコレクション関連論文を収録
    • 一部の項目には要旨があり、大半はURLまたはDOIを提供
    • 継続的に更新され、BibTeX, PostScript, PDF形式でダウンロード可能

1件のコメント

 
GN⁺ 2025-12-24
Hacker Newsの意見
  • 私がいちばん好きなガベージコレクション関連の逸話はこの記事にある

    • 他でも似た方式が使われていると聞いたことがある。たとえばStandard Missileでは油圧油を再循環させず、飛行中にそのまま排出するが、実に見事な工学的解決策
    • それは一種のregion-basedメモリアロケータと呼べる気がする。ただ、存在するリージョンがたった1つだけという違いがある
    • こうした方式はかなり標準的なアプローチだ。重要なのは null GC ではなく、静的解析によって正確なメモリ要求量を証明することにある
    • この話は同僚によく聞かせる良い教訓だ。完璧なソフトウェアを作りたくなるが、実際のビジネス要件では必ずしもそこまで必要ではないことを示している
    • これこそ本当の究極のガベージコレクション技術と呼びたい
  • 著者たちが実際にどんなプロダクションGCを作ってきたのか、本に書かれていたらよかったと思う。現実世界から学べる直感に反する事例が多いので、そういう内容が入っていれば、もっと面白くて役に立つ本になったはずだ

  • 本当に良い本だ。以前の議論もあった: 以前の議論へのリンク

  • 本にはリアルタイムGCについての短いセクションがあるが、制約の大きい環境でのGCをどの程度重視しているのか気になる
    私も前から3D AA級ゲームをGCで実装してみたいという衝動があった。リソースが極端に限られたプラットフォームでなければ、十分可能だと思う
    今は仕事に少し余裕ができたので、この冬から春にかけてプロトタイプを作ってみようかと思っている

    • 最近のほとんどのAAゲームエンジンはすでにGCを使っている。代表例はUnrealUnityだ。内部では手動メモリ管理も使うが、公開APIはGCを前提に設計されている
      一方、Godot EngineはGCを使わず、参照カウントを使用している。循環参照の検出をサポートしていないため、すべてのオブジェクトをツリー構造に配置しなければならない
    • 米海軍の戦闘艦の兵器照準システムや、フランスのミサイル追跡システムもJavaのリアルタイムGCで実装されている。
      関連資料: Thales事例, Aegis Combat System, USS Bunker Hill事例
      現実ではGCはどれも同じではなく、「insert credit to continue」のようなものも存在しない
    • MinecraftもGCを使うインディーゲームだが、史上最も多く売れたゲームだ
    • Unreal Engineは内部オブジェクトグラフ向けのGCを持っているので、すでに多くのゲームがGCを活用している
    • UnrealインクリメンタルGCを使っている
  • この本は本当に素晴らしい参考書だ。GCを使うエンジニアなら必読で、GCが不要な人にとっても、冒頭のメモリアロケータの部分が非常に有益だ

  • 私もこの本を持っている。とてもよく書かれていて丁寧な本なので、強くおすすめする

  • 以前Hosking教授の授業を受けたことがある。良い経験だったし、その方の本だと知ってすぐ購入した
    必須ではないが、GCの設計上の問題やファイナライザの影響を深く理解するのに役立った。その部分を読んでかなり大きな気づきがあった

  • 印刷版とEPUBファイルを一緒に買える「buy now」ボタンがあればいいのにと思う。サイトで本は宣伝しているが、購入手続きが複雑すぎる