老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Python垃圾回收机制是什么?老男孩Python

老男孩IT教育

常见问题

2021年6月11日 13:36

本期为大家带来Python的垃圾回收机制,现在很多编程语言,如PHP、Java、C#等都采用了垃圾回收机制,自己管理内存及其方便,极其自由,它可以任意申请内存,管理内存,但有优点自然也会有缺点,那么它的缺点是什么呢?请看下文为你详细介绍:

       哈喽,本期为大家带来Python的垃圾回收机制,现在很多编程语言,如PHP、Java、C#等都采用了垃圾回收机制,自己管理内存及其方便,极其自由,它可以任意申请内存,管理内存,但有优点自然也会有缺点,那么它的缺点是什么呢?请看下文为你详细介绍:

       Python

       自己管理内存虽然很方便,但也会导致内存大量泄漏,或造成空指针等bug问题,对于一个定位简单易用的编程语言,自然不会让用户处理回收内存的问题,这里就提到Python了,它采用的是引用计数机制,标记-清除和分代收集两种机制为辅助的策略。

       ·引用计数机制:

       在Python中,万物皆对象,它们的核心就是一个结构体:PyObject,它是每个对象必有的内容,其中ob_refcnt就被做为引用计数,当一个对象被新引用时,它的数量就会增加,自然,当引用的对象删除时,它的数量也会减少。当数值为0时,这个对象就终结了。

       引用计数|优点:

       简单易用好上手,实时性很高,为什么这么说呢?如果没有引用,内存就会直接释放,不用等待指定时间,其次,它回收内存的时间会放在平常生活中。

       引用计数|缺点:

       比如a和b相互引用,如果不存在其他引用时,那么它的数值会一直为1,内存自然也无法被回收,就导致了循环引用,从而消耗资源,但根据这一点,注定Python会引入新的回收机制,所以小伙伴们不用担心。

       ·标记-清除:

       小伙伴根据名字是不是能大概猜到意思了?对的,它首先要标记对象,然后进行垃圾回收,首先将所有对象标记为白色,同时确定根节点,标记为黑色,将有效的对象标记为灰色,检查完灰色对用后,标记成黑色,重复直到不存在灰色为止,最后白色的都是需要清除的。

       想要了解更多关于Python技术的,欢迎向老男孩教育咨询,我们的Python课程涉及的地方很全面,最后一个阶段会带领学员完成项目,丰富自己的项目经验,不仅能学到东西,还能自己做项目以增长经验,需要了解更多的,欢迎来咨询我们。

       推荐阅读:

       Python学起来困难?那是你方法不对,快来看看我的!

       Python如何使用MongDB?老男孩Python怎么样?

       Python的多进程和多线程是什么?老男孩Python

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。