カウントオブジェクトのメソッド:
__init__前__new__実行は、オブジェクトを傍受するために使用されます。
オブジェクトストレージの原則:
- すべてのpythonオブジェクトのプリミティブデータ型が存在しません。
- すべてのオブジェクトがメモリに保存されています。進アドレスを表示するメモリアドレスID()、ヘックス()。
- 文字の短い一般的な値は、キャッシュは、より多くの同じオブジェクトの作成されません。同じオブジェクトID()値の値
- 他のオブジェクトストレージコンテナオブジェクトは、単に他のオブジェクトではなく、他のオブジェクト自体を指します。
Pythonのメモリ管理メカニズム+ =ガベージコレクションのガベージコレクション
リファレンスカウンタ(ハイパフォーマンス)
- 1でカウントし、基準時間を減少させ、基準時間、1によるカウントを増やします
- 参照カウントのインポートSYS sys.getrefcountをチェックします(オブジェクト)
- シーンを追加する(作成/引用さ/関数のパラメータとして渡される/コンテナ内の要素として格納)
- マイナスワンシーン(削除する/新たなオブジェクト/オブジェクトの葉にその範囲/対象の存在が破棄されるコンテナを与えられて)
ガベージコレクション(循環参照の問題を解決するために)カウンタ機構からのオブジェクトはまだ経験豊富な引用を解除されていない、循環参照オブジェクトを見つけるには、関連オブジェクトを取り除きます
- 循環参照を見つける方法
(このようなリストなど、あなたが他のオブジェクトを参照することができ、/タプル/辞書/カスタムクラスのオブジェクトをオブジェクト)コンテナの1収集すべてのオブジェクトによって参照二重にリンクされたリスト
現在の参照カウントを記録する変数gc_refsによって各コンテナオブジェクトについて2.
各コンテナオブジェクト3.、彼のコンテナオブジェクト参照を見つけるために、1つのコンテナオブジェクトによって参照カウント
参照カウントが0である場合、上記の手順の後4は、コンテナ・オブジェクトは、代表的に回収することができます
- オブジェクトの数を表示する循環参照インポートobjgraphのobjgraph.count()
減少し、このオブジェクトが識別される寿命を吹き出され、この検出された物体の周波数を、より大きなライブより長い寿命を仮定オブジェクト10のない検出を想定していない: - 循環参照のパフォーマンスを向上させます
メカニズム:1オブジェクトの後には、世代に属して作成されます0
2.経験豊富な世代のガベージコレクションは、まだ生きている次の世代に分割されている場合
3.ガベージコレクションサイクル順序、世代0の0世代別ガベージコレクションの特定の番号が生成および回収をトリガします
ガベージコレクションの特定の数の代わりに、1、0、1、2世代リサイクル生成をトリガします
チェックして、関連するパラメータは、GC gc.get_thresholdをインポート設定()gc.set_threshold(500,10,5)
ガベージコレクタのうち、新たなオブジェクト及び数の消失の数が特定の閾値意志トリガごみ検出gc.set_threshold(500,10,5)500の閾値が存在するに至ります