# -*- coding: utf-8 -*-
垃圾回收
一.小整数对象池
python对于小整数的定义是[-5,257）,使用小整数池，所有位于这个范围内的整数都是使用同一个对象
使用小整数对象池，优化速度，避免为整数频繁申请和销毁内存空间

二.intern机制
小整数[-5,257)共用对象，常驻内存
单个字符共用对象，常驻内存
单个单词，不可修改，默认开启intern机制，共用对象，引用计数为0，则销毁

三.垃圾回收
python采用的是引用计数机制为主，标记-清除和分代收集两种机制为辅的策略
引用计数机制的优点：
简单
实时性：一旦没有引用，内存就直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处：处理回收内存的时间分摊到了平时。

引用计数机制的缺点：
维护引用计数消耗资源
循环引用

三.导致引用计数+1的情况
对象被创建，例如a=23
对象被引用，例如b=a
对象被作为参数，传入到一个函数中，例如func(a)
对象作为一个元素，存储在容器中，例如list1=[a,a]

四.导致引用计数-1的情况
对象的别名被显式销毁，例如del a
对象的别名被赋予新的对象，例如a=24
一个对象离开它的作用域，例如f函数执行完毕时，func函数中的局部变量（全局变量不会）
对象所在的容器被销毁，或从容器中删除对象

五.查看一个对象的引用计数
import sys
a = "hello world"
#查看a对象的引用计数，但是比正常计数大1，因为a传入函数getrefcount+1
sys.getrefcount(a)
