【Python培训班】关于Python的垃圾回收,有哪些需要了解的?
老男孩IT教育
行业新闻
2022年1月10日 17:39
很多人都知道Go语言有垃圾回收,但其实Python编程语言也有,垃圾回收简称‘GC机制’,当内存不再需要时,应及时释放,这种行为,被叫做“垃圾回收”,如果你还不了解,请看下文:
很多人都知道Go语言有垃圾回收,但其实Python编程语言也有,垃圾回收简称‘GC机制’,当内存不再需要时,应及时释放,这种行为,被叫做“垃圾回收”,如果你还不了解,请看下文:
垃圾回收
其实对于Python开发者来说,日常是不需要关注内存管理和垃圾回收的,因为CPython的解释器有独有的机制进行处理,为什么在Python语言中不太需要关注垃圾回收呢?
因为Python自己的解释器自动做了垃圾回收相应的处理,在绝大部分场景下是不需要人为干涉的,另外,提到Python就会想到开发效率,因为Python是一门胶水语言,在很多场景下,高性能以及内存问题并不凸显,而且现在服务器资源便宜而人力资源很贵的情况下。
在使用Python做Web开发时,尽管工作了很长时间,也很少会遇到内存管理和垃圾回收的情况,Web应用几乎都是使用多进程模型的,一则是会有定期超时重启的机制,二是每次上线的操作也会进程的重启。
所以不会有某个进程长时间的驻留,使其占用很多内存,导致内存泄漏。所以,GC的缺陷基本不太会对Web开发产生很大的影响。
且CPython也足够完善,基本不太会出现内存泄漏这样的问题。大部分场景下,都是因为开发者错误的使用或者是误判导致内存占用不正常。
引用计数
Python的垃圾回收是建立在引用计数上的,所以理解它也是非常重要的,引用计数的原理如下:
当一个对象的引用被创建或复制时,对象的引用计数加1;
当一个对象的引用被销毁时,对象的引用计数减1;
当对象的引用计数减少至0时,也就意味着对象已经没有被使用了,可以将其所占用的内存立即释放。
这种机制的特性是,有比较不错的实用性,但也会有一个循环引用的问题,比如A引用了B,B又引用了A,导致每个对象的引用计数都不为0,那么A和B占用的内存资源将永远不会被回收。
所以就需要一些回收算法来解决这个问题,而Python就是使用了标记清除和分代回收机制。
关于"关于Python的垃圾回收,有哪些需要了解的?"的话题到这里就结束了,老男孩教育Python班型分为:脱产班、周末班、网络班、直播班等,班型不同收费不同,想要了解课程价格,欢迎咨询在线客服,也可以来校免费试听,领取学习大纲。
推荐阅读:
