メモリ管理/ガベージコレクション:

メモリ管理(ガベージコレクション)

  • オブジェクトカテゴリ:

    • 固定長:int型/フロート

       _PyObject_HEAD_EXTRAの#define \ 構造体_object * _ob_next; \ 構造体_object * _ob_prev; typedefは構造体_object { _PyObject_HEAD_EXTRAは   //双方向リンクリストのために構成さPy_ssize_t型がob_refcnt; //参照カウンタ構造体_typeobject * ob_type; //タイプ} PyObject。
           
           
       
       
           
           
           
       
    • 複数の要素:STR /リスト/ dictの/セット/組

       typedefは構造体{ PyObject ob_base。Py_ssize_t型はob_size; 可変部分内の項目の/ *数* / } PyVarObject。
           
           
       
  • メモリ管理

    • ベースの参照カウンタ

       DEF FUNC():   各作成されたオブジェクト、メモリ内のオープンスペース、デフォルトで参照カウンタ1;    = 123は、   元のメモリをポイントまで可変開口部を作成し、参照カウント+ +1;    Bが= FUNCを( )参照カウンタが0である場合、それはごみを再利用することができることを示しています。
       
       
       
       
       
       
       
       
       
       
    • 循環の問題が引用しました

       オブジェクトがPythonのSTR /リスト/ dictの/セット/用に作成されたときにタプルクラス、オブジェクトが二重にリンクされたリストに配置されます。
       A = "ASDF"
       B = [11,22]
       C = { 'K1':123} オブジェクトリスト700に達した場合に循環参照がある場合、すべての二重リンクリストの要素は、二つである-1、スキャンされ、最終的に二つに、リストのすべての要素をスキャン:1.参照カウンタ0オブジェクトを回収した。2.オブジェクト参照カウンタが0でない場合、それは他に(3つのリストの合計)二重リンクリストであろう。  
       
       
       
       

おすすめ

転載: www.cnblogs.com/zhang-da/p/12005111.html