python的内存管理机制主要分为三部分
一、引用计数
通过引用计数来保持对内存中的变量跟踪,Python内部记录中所有在使用对象各有多少个引用。
Python中有个内部跟踪变量叫做引用计数器,每个变量有多少个引用,简称引用计数。当对象被创建时就创建了一个引用计数。
当某个对象的引用计数为0时,对象就不在需要,就列入了垃圾回收队列。
引用计数增加:1、对象被创建:x=4;2、另外的别人被创建:y=x;3、被作为参数传递给函数:foo(x);4、作为容器对象的一个元素:a=[1,x,‘33’];
引用计数减少时:
1、一个本地引用离开了它的作用域。比如上面的foo(x)函数结束时,x指向的对象引用减1;
2.对象的别名被显式的销毁:del x ;或者del y;
3.对象的一个别名被赋值给其他对象:x=789
4.对象从一个窗口对象中移除:myList.remove(x)
5.窗口对象本身被销毁:del myList,或者窗口对象本身离开了作用域。
引用计数的优点是
优点:“实时性”,任何内存,一旦没有指向它的引用,就会立即被回收。
缺点是:
(1). 效率底下:引用计数机制带来的计数操作,与引用赋值成正比。频繁的技术操作,会给CPU带来大量消耗。
(2). 循环引用:也就是两个对象相互引用,这样的话,两个对象的引用计数永远不会为0