Python学习之路——内存管理
来源:互联网 发布:网络电话卡有哪些 编辑:程序博客网 时间:2024/05/16 16:10
1 变量定义
在Python中,变量定义不像C/C++等语言需要显式声明语句,变量在第一次赋值时自动声明。但和C/C++等语言相同的是:变量只有被创建和赋值后才能被使用。
变量一旦被赋值,你就可以通过变量名来访问她。
>>> x = 4>>> y = 'test string'>>> x4>>> y'test string'>>>
2 动态类型
Python中不但变量名无需事先声明,而且也无需类型声明。在Python语言中,对象的类型和内存占用都是运行时确定的。尽管代码被编译成字节码,Python仍然是一种解释型语言。创建对象时,解释器会根据语法和右侧的操作数来决定新对象的类型,在对象创建后(也就是变量赋值),一个该对象的引用会被赋值给左侧的变量。
3 内存分配
Python解释器承担了内存管理的复杂任务,程序员只需要关心要解决的问题,底层的事放心交给Python解释器就行。(真是个好消息)
4 引用计数
Python解释器是如何管理内存的,它是依据什么来决定是否回收这个对象?Python使用了引用计数这一简单技术。Python内部记录着所有使用中的对象各有多少个引用。一个内部跟踪变量,称为一个引用计数器。每个对象各有多少个引用,简称引用计数。当对象被创建时,就创建了一个引用计数,但这个对象不再使用,这个对象的引用计数变为0时,他就被当作垃圾回收。
4.1 增加引用计数
当对象被创建并(将其引用)赋值给变量, 该对象的引用计数就被设置为1。
当同一个对象的引用又被赋值给其他变量,或作为参数传递给函数、类实例时,或赋值给一个容器对象的成员时,该对象的一个新的引用,就会被创建,该对象的引用计数自动加1.
4.2 减少引用计数
一个对象的引用计数在以下情况下会减少:
一个本地引用离开了其作用范围,例如函数结束了。
对象的一个引用被显式删除
del y # y为变量
对象的一个引用被赋值给其他对象
x = 123
x = 456(对象123的引用计数减1, 456的引用计数加1)
对象从容器对象移除
aList.remove(x)
容器对象被销毁
del aList
4.3 del 语句
del语句会删除对象的一个引用,它的语法如下:
del obj
5 垃圾收集
不再使用的内存会被一种称为垃圾收集的机制释放。解释器负责跟踪对象的引用计数,而垃圾收集器负责释放内存。垃圾收集器是一块独立代码,它用来寻找引用计数为0的对象,它也负责检查那些虽然引用计数大于0但也应该被销毁的对象。
- Python学习之路——内存管理
- python学习之路--内存管理
- Linux内核学习之三——内存管理
- 现代操作系统——内存管理之学习思路
- Python基础——内存管理
- OC基础—内存管理之set方法内存管理
- python学习之文件管理
- c++学习笔记——内存管理
- Objective-C学习——内存管理
- OC学习笔记——内存管理
- linux内核学习——内存管理
- OC学习笔记——内存管理
- Lua学习总结——内存管理
- oc学习笔记—内存管理
- OC基础—内存管理之autorelease
- OC内存管理之—引用计数
- 学习之路——内存分配
- OC内存管理之—内存释放原则
- SVN使用教程总结
- C语言学习笔记(七) -字符串 String
- 11、广告条 ViewPage
- Java设计模式——桥接模式(Bridge)
- Intersection of Two Linked Lists
- Python学习之路——内存管理
- myeclipse6.5的alt+/功能,内容辅助,快捷键设置
- Cocos2D-X 3.4 移植 Android
- 黑马程序员——java基础——数组
- Experience Design for Sexable Forum
- 连接规范
- 点击验证码无刷新重新加载验证码图片
- JavaEE SSH框架整合(三) struts2 异常、http错误状态码处理
- 我赢职场全国首发Apple Watch开发30分钟秒懂