内存空间管理

1、空间引用计数,垃圾回收机制的依据

  --变量的值被引用,该值的引用计数加1

  --变量解除绑定,该值的引用计数减1

  --如果该值的引用计数为0,就会被自动回收

python   day09-LMLPHP

2、引用计数会出现的循环问题:相互引用无法释放

  --两个变量引用其值,值之间又相互引用

  --变量接触绑定,但两个值的引用计数都不为0

  --引用计数>0的值无法被回收,导致内存泄漏

python   day09-LMLPHP

3、标记清除:解决循环问题

  --所有线程能访问到的栈区变量称为gc roots对象

  --将所有gc roots变量能直接或者间接访问到的值标为存活状态

  --将所有存活状态的值拷贝一份,复制到新的区域,完成变量的重新引用

  --清除机制,会将之前产生的值全部进行回收

python   day09-LMLPHP

4、分带回收,采用的还是引用计数来回收,是对该机制的一个优化

  --刚产生的变量值放在新生代中高频检测,如果引用计数为0,就采用垃圾回收机制进行回收,如果长期标记存活经过多次检验就会提高分带

  --分带越高,检测频率越低,且还能继续提高一直存活的变量值,从而提高整体垃圾回收机制效率

python   day09-LMLPHP

05-11 19:38