タグ

algorithmとRubyに関するatsushifxのブックマーク (1)

  • RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python Pat Shaughnessyが、ブタペストで開催されたRUPY2013でのプレゼンの前半を自らのブログで紹介しています。 ガベージコレクタは、「ゴミを集める」という行為だけでなく、「新しいオブジェクトのためにメモリをあてがう。」「不要なオブジェクトを見つける」「不要なオブジェクトからメモリを取り戻す。」という、人間の心臓が血液を浄化するような働きをしている。 この簡単なコードサンプルを見ると、RubyPythonの記述はよく似ているが、それぞれの言語の内部でのインプリの仕組みは違う。 1) Rubyのメモリ Rubyは、コードが実行される前に、数千のオブジェクトを先につくり、それをリンクされたfree listに置

    atsushifx
    atsushifx 2013/10/28
    GCの基本アルゴリズムは3つ。Mark&Sweep,Copy,Reference Count。RubyはMark&Sweepなので確実だけどプログラムが長期間停止する。Pythonはカウントの増減を間違えるとメモリーリークが残る。次世代GCはリアルタイムと世代間管理の組み合
  • 1