在编程世界里,当一个对象失去引用或者离开作用域后,它就会被当做垃圾而被自动**,这就是垃圾回收机制。在现在的**语言如Python、Java都使用了垃圾回收机制,不过与Java采用的垃圾收集机制不同,Python采用的是引用计数机制为主,标记-**和分代收集两种机制为辅的策略。下面就来给大家详细的讲一下如何理解和掌握Python垃圾回收机制。
引用计数机制
从广义上来讲,引用计数也是一种垃圾收集机制,而且是一种最直观、最简单的垃圾收集技术。引用计数的原理是当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1;当对象的引用计数减少为0时,就意味着对象已经没有被任何人使用,可以将其所占用的内存释放。
引用计数**的优点是“实时性”,任何内存一旦没有指向它的引用,就会立即被回收。最致命的却显示循环引用,为了解决这个问题,Python引入了其他的垃圾收集机制来弥补引用计数的缺陷:“标记-**”,“分代回收”两种收集技术。
标记-**机制
“标记-**”是为了解决循环引用的问题,我们并不改动真实的引用计数,而是将集合中对象的引用计数复制一份副本,改动该对象引用的副本。对于副本做任何的改动,都不会影响到对象生命走起的维护。“标记-**”可以包含其他对象引用的容器对象(比如:list,set,dict,class,instance)都可能产生循环引用。
分代收集
分代收集机制作为引用计数的辅助机制,用于解决产生的循环引用问题。而循环引用只会出现在“内部存在可以对其他对象引用的对象”,比如:list,class等。分代收集机制的思想简单点说就是:对象存在时间越长,越可能不是垃圾,应该越少去收集。
垃圾回收机制有利于编程人员优化程序,是每一个初学Python的人必须要掌握的基础知识。千锋Python培训课程以理论知识打基础,一实战项目驱动教学过程,课程内容包含Python基础、Linux初级、Web开发三大框架(Django、Flask、Tornado)、docker容器及服务器发现、爬虫、数据挖掘与人工智能等知识点,学员可接触真正的企业级项目开发,毕业后可以轻松胜任企业工作。
欢迎具体了解:郑州IT培训机构http://zz.mobiletrain.org/ |