type
status
date
slug
summary
tags
category
icon
password
面试题
- 变量无需事先声明,也没有类型之说,这是动态语言特性
- 变量只是一个标识符,指向一个对象,而这个对象被创建在内存“堆”中
- 类型属于对象,而不是变量
- Python编程中一般无需关心变量的存亡,一般也不用关心内存的管理
- 每个对象都有两个标准的头部信息:类型标志符标识这个对象的类型;引用计数器决定何时回收这个对象。
- Python使用引用计数记录所有对象的引用数。当对象引用数变为0,它就可以被垃圾回收GC(garbage collection)
- 解决问题的根本方法其实还是减少垃圾.
计数增加:
- 赋值给其它变量就增加引用计数,例如x=3;y=x;z=[x,1]
- 实参传参,如foo(y)
计数减少:
- 函数运行结束时,局部变量就会被自动销毁,对象引用计数减少
- 变量被赋值给其他对象,例如:x=3;y=x;x=4
有关性能的时候,就需要考虑变量的引用问题,但是,到底该释放内存还是尽量不释放内存,看需要。
内存是宝贵的,因为它快。但再好的硬件资源,再多的机器,在高并发面前都嫌少。内存一定要合理利用。
但是,数据搬到内存中不易,不要把大量数据好不容易搬到内存中,立刻就不要了。这样非常没有效率。
引用计数的问题
- 引用计数是简单实现垃圾标记的办法。
- 引用计数可能出现循环引用,Python提供了gc模块,解决了这个问题。