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 但也应该被销毁的对象。
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 但也应该被销毁的对象。
相关文章推荐
- python的内存管理
- python的内存管理--自动管理
- Python的内存管理
- 体会Python的乐趣
- Python--内存管理
- python的内存管理机制
- 【体会Python之美】【文件】file,open,read,readline,readlines,write,close
- Python的内存管理机制
- Python PIL(Python Image Library)使用体会
- python菜鸟的心得体会1
- Python深入06 Python的内存管理
- Python内存管理说明
- Python 核心编程笔记_Chapter_3 Note_3 内存管理_垃圾回收
- 【转】从C#到Python —— 谈谈我学习Python一周来的体会
- Python的内存管理以及垃圾回收
- Python初学心得体会
- python学习心得1----python基本风格和内存管理
- Python程序调试的一些体会
- Python Study (06)内存管理GC
- python是如何进行内存管理的?