タグ

PythonとGCに関するrin51のブックマーク (4)

  • RubyとPythonにおけるガベージコレクションの視覚化 | POSTD

    稿は、ブダペストで開かれたイベント「 RuPy 」で、Pat Shaughnessyが披露したプレゼンの内容をまとめたものです。 プレゼンの映像はここ から視聴できます。 稿は当初、 同氏の個人ブログ に投稿されましたが、同氏の了承を得て、Codeshipに再掲載します。 このイベントは「RubyPython」に関するカンファレンスなので、RubyPythonでは、ガベージコレクション(以下「GC」)の動作がどう違うのかを比較すると面白いだろうと私は思いました。 ただしその題に入る前に、そもそもなぜ、GCを取り上げるのかについてお話しします。正直言って、すごく魅力的な、わくわくするテーマではないですよね? 皆さんの中でGCと聞いて、心がときめいた方はいらっしゃいますか? [実はこのカンファレンス出席者の中で、ここで手を挙げた人は数名いました!] Rubyコミュニティで最近、Rub

    RubyとPythonにおけるガベージコレクションの視覚化 | POSTD
  • 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に置

  • Python の GC のデバッグ機能 - methaneのブログ

    Python のデーモン型のプログラム(具体的に言うと Loggerhead という bzr のリポジトリブラウザ)が大量(具体的に言うと100MB以上)メモリをっていたので、それを調べた時のメモ。 まず、当にそれだけのメモリを利用しているのかどうかを meliae というメモリプロファイラで調べたんだけど、18MBくらいしか使ってなかった。 meliae の使い方はまた今度に回すとして、今回はそんなにメモリを使うはずがないのにメモリを使ってしまっているケースについて。 この場合は、循環参照を大量に作ることによってメモリブロックがたくさん確保され、循環参照コレクタが実行された後も(メモリブロック内に1つでも生き残っているオブジェクトがいるなどの理由で)OSにメモリブロックが返されないという原因が考えられる。(循環参照以外の原因でメモリが大量に確保されてる可能性もあるんだけどね) 今日の

    Python の GC のデバッグ機能 - methaneのブログ
  • PythonのGCについて

    PythonのGarbageCollection 原文 Neil Schemenauer (翻訳:中村 成洋) ポータブルなGarbageCollection 概要 循環参照はリスト,タプル,インスタンス,クラス,辞書,関数に伴って見つかります. インスタンスの __del__ メソッドは正常に取り扱われます. 新しいタイプをGCの対象に追加するのは簡単です. このGCが有効なPythonは,通常のPythonとバイナリ互換です. 世代別GCが動いています(今は三世代).このオーバヘッドをpybenchで測ったら,大体4%くらい占めていました. 実質的に,すべての拡張モジュールは,不変に(私は,標準的な配布において 新しいものとcPickleを修正しなければなりませんでした)ならなければなりま せん.gcと呼ばれている新しいモジュールは,コレクターを調整して,デバッ ギングオプションをセッ

  • 1