上节课我们说了,定义变量其实就是在内存里开辟了一个内存空间,然后把内存空间的一个地址捆绑给了一个变量名,通过这个变量名我们就可以找到这个对应的值在哪。现在我们要知道,定义变量首要占用内存空间的,但内存空间大小是有限的。
这时候就是涉及到一个问题,你申请了内存空间要用没关系,但是如果你不用了的话,一定要记得把内存空间给释放出来,不然的话你申请了如果还不用,那你就在白白浪费内存资源,导致计算机内存可能就被占满了。
就有那种很垃圾的程序,它占用一堆内存空间又不释放,最后又把内存空间给撑爆了,这就叫做内存溢出。为了防止这种问题,咱们写程序的时候,你定义变量申请内存空间,一定要记住,用了以后要把内存空间给释放出来。
这个操作就叫内存管理。
我们在写代码的时候,考虑内存空管理是一件非常痛苦的事情。因为这个东西实在是太繁琐了,一旦稍微处理不当,你的程序就有可能要崩溃,于是Python推出了一个内存管理机制,称之为垃圾回收机制。
那什么叫做垃圾呢,举个例子;之前我们定义了一个name叫做于谦,我们通过这个变量名就可以找到它,也就是这个小房间里捆绑着一个门牌号(变量名),这个变量值是可以顺着变量名引用到的,这个时候还不叫垃圾。一旦小房间里没有捆绑着变量名,你是不是就找不到这个变量值了。现在找不到值了,就成为了一个垃圾。
垃圾回收机制就是用来回收这种没有关联任何变量名的值,这就涉及到一个概念,叫做引用计数,顾名思义就是统计引用的个数嘛。
就以于谦这个值为例,它的引用计数,也就是这个内存空间身上捆绑了几个变量名,现在捆绑了一个name,还有a、b这三个,那么它的引用计数就是3。
反之,如果name、a、b这三个都和于谦解除了捆绑关系,那么它的引用计数就位0,也就是垃圾。
领取专属 10元无门槛券
私享最新 技术干货