垃圾回收机制:python采⽤的是以引用计数为主,隔代回收机制为辅的策略
小整数对象池(Python运行之前就已经创建好了),常驻内存
Python对小整数的定义是[-5,257)这些整数对象是提前建立好的,不会被垃圾回收.在一个Python的程序中,所有位于这个范围内的整数使用的都是同一个对象.
同理,单个字母也是这样的123a ,b= 100,100id(a) == id(b)# True
intern机制尽量地共享一份内存地址,靠引用计数去维护何时释放
但如果是包含有特殊字符的就不会共享了123456# 共享a = "hello"b = "hello"# 不共享a = "hello world"b = "hello world"
引用计数
|
|
引用计数的优点是
- 简单性
- 实时性:一旦没有引用,内存就直接释放了.不用像其他机制等到特定
时机.实时性还带来一个好处:处理回收内存的时间分摊到了平时.
缺点是
- 维护引用计数消耗资源
- 循环引用或相互引用,不能完成回收
gc模块唯一处理不了的是循环引用的类都有del方法,所以项目中要避免
重写del方法
触发垃圾回收的情况:
- 调用gc.collect(),
- 当gc模块的计数器达到阀值的时候.
- 程序退出的时
- 引用计数为0时