您的位置:首页 > 编程语言 > Python开发

python 内存管理的体会

2013-08-03 20:50 197 查看
面试时被问到python的内存管理机制,以前看书时没太在意,当场傻眼了,回去后就翻开书体会了下,下面是体会的内容,不对或需要补充的地方请各位指正、补充。

python的内存管理是有其解释器负责,解释器承担了内存管理的复杂任务,所以一般python程序员不用太去关心内存管理机理。要想成为一个不错的程序员,我们还是要去了解下她的内部构造。python拥有引用计数机制和垃圾回收机制:

1.引用计数机制:

创建一个python对象,就会创建一个引用计数,python内部记录着所有使用中的对象各有多少引用。可以这样说,当对象被创建并被赋值给变量时,给对象的引用计数就被设为1;当同一个对象被赋值给其他变量或作为参数传递给函数、方法或类实例时,可称作为该对象的别名,就被创建,相应的其引用计数自动加1。

例如:变量为a,在内存中创建一个对象为6,当a=6时,对象的引用计数就会设为1;当b=a时,b可认为是该对象的别名,是对对象的另一个引用,引用计数就会加1变为2.

当对象的引用被销毁,其引用计数就会减1。还有一种情况也会引起引用计数减1:

例如:

a=3

b=a

b=4

对象3被创建并赋值给a,它的引用计数是1,b=a时,对象的引用计数为2 ,但是当b 被重新赋值为4时,对于对象3的引用就少了1,其引用计数就变为1。

当对象的引用计数变为0时,就会被垃圾收集器回收释放掉。

2.垃圾收集机制:

不再使用的内存会被垃圾收集的机制释放,垃圾收集器来寻找引用计数为0的对象以及那些引用计数大于0 但也应该被销毁的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: