zoukankan      html  css  js  c++  java
  • Python Day09

    ## 内存管理:
    
     引用计数:垃圾回收机制的依据
    
    ```python
    变量的值被引用,该值的引用计数+1
    变量的值被解绑,该值的引用计数-1
    变量的引用计数为0时就被垃圾回收机制回收
    ```
    
    引用计数的bug,出现循环引用,导致引用计数无法归零
    
    ```python
    两个变量引用其值,其值之间又相互引用
    变量与值解除绑定,但是值之间的引用还在,引用计数永不归零。
    无法被垃圾回收
    ```
    
    标记清除:解决引用计数的bug:
    
    ```python
    所有线程能访问到的栈区变量,称之为 gc roots对象
    所有gc roots对象可以直接或间接访问到变量值,都会被标记为存活状态
    将所有存活的变量值形成新的拷贝,到新的地址空间,变量值的地址将发生改变
    将之前的地址空间区域全部清除。完成空间的释放
    ```
    
    分代回收:对引用计数的进行的效率优化。
    
    ```python
    1刚产生的变量值,放在新生代中,高频率检查引用计数,长期存活的变量值将提高到下一级分代
    分代越高,检查频率越低,且还能一直提高存活变量值的分代,提高垃圾回收效率。
    ```

    引用计数bug,循环引用示意图:

    分代回收机制示意图:

    标记清除机制示意图:

  • 相关阅读:
    芯片难题
    permutation
    小凸玩矩阵
    gender
    NOI2019序列非启发式做法
    莫比乌斯函数&莫比乌斯反演
    「雅礼day2」最大公约数gcd
    容斥原理&反演
    树上路径的交和并
    CF906D Power Tower
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/10760448.html
Copyright © 2011-2022 走看看