タグ

gcに関するiga_kのブックマーク (4)

  • マークスイープガベージコレクションを実装してみた - Qiita

    これは、GLOBISアドベントカレンダー16日目の記事です。前回は、@chrojuさんのDocker buildGitHub Actions に最適化するという記事でした。 はじめに 弊社ではRuby内部実装を知ることを目的に、@_ko1さんがWEB+DB PRESSで連載されていた「Rubyのウラガワ ─⁠─ Rubyインタプリタに学ぶデータ構造とアルゴリズム」の社内勉強会を開いています。 社内勉強会を通してガベージコレクション(以降、GCと呼ぶ)に興味を持ち、マークスイープGCを実装しました。 記事は、RubyのベースGCアルゴリズムであるマークスイープGCについて紹介しようと思います。 前提知識 オブジェクト アプリケーションによって確保されたデータ 生きているオブジェクト アプリケーションから参照されているオブジェクト 死んでいるオブジェクト アプリケーションから参照されな

    マークスイープガベージコレクションを実装してみた - Qiita
    iga_k
    iga_k 2022/12/20
    興味持って調べて、さらに手を動かして実装してみててすごい。
  • YARV Maniacs 【第 12 回】 インクリメンタル GC の導入

    書いた人:ささだ はじめに Ruby 2.2 から、インクリメンタル GC を導入しようと開発を進めています。稿では、この話題を取り上げたいと思います。 YARV というと、仮想機械、Virtual machine、バイトコード実行系、という気もしますが、インタプリタ全体で VM ととらえて、一つこの話題におつきあい下さい。 インクリメンタル GC は、GC の停止時間を短くするためのアルゴリズムの 1 つです。Ruby 2.2 に導入することで、GC による停止時間を短くしようとしています。 というか、この連載も、とても久々ですね…。そういえば、今年で YARV を作り始めてから 10 年目でした。 これまでの話 Ruby は当初から mark & sweep GC が搭載されていました。ルートから辿れるオブジェクトをマークしていき、マークされていないオブジェクトをゴミと判定して回収す

    iga_k
    iga_k 2018/08/30
    笹田さんのGC解説記事
  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • 言語のGC機能と参照カウント (前編) - moriyoshiの日記

    たまにはちゃんと書いたほうがいいかなと思って書いてみる。 あらまし 原始的な参照カウントベースのガーベジコレクションは、循環参照が発生すると、その参照に含まれるオブジェクトを回収できないという厄介な問題を抱えている。循環参照とは、1つ以上のオブジェクトが環状の参照関係を形成している状態のことで、このような参照を持つオブジェクトは、やがてルート (ある時点で言語ランタイムが管理しているすべてのスコープと考えてもいい) から辿りつけなくなって、解放されずにリークしてしまう。 この問題はいろんな LL 言語に見られる。 Perl の場合 use Devel::Peek qw(Dump); sub make_circular { my $foo = {}; my $bar = {}; my $baz = {}; $foo->{'bar'} = $bar; $bar->{'baz'} = $baz;

    言語のGC機能と参照カウント (前編) - moriyoshiの日記
  • 1