Python教程:GC垃圾回收

python内存回收gc模块 阅读详情

一.GC垃圾回收

1.小整数对象池:Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是[-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收
2.大整数对象池:每一个大整数,均创建一个新的对象
3.intern机制:假如要创建n个对象的是一样的字符串,那么python只会创建一个内存空间来存储,其他对象都是引用,但如果字符串中出现空格或其他符号就表示为不同的对象

二.GC(Garbage collection)垃圾回收

Python里也同Java一样采用了垃圾收集机制,不过不一样的是: Python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略

三引用计数机制的优点

1.简单
2.实时性:一旦没有引用,内存就直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时

四. 引用计数机制的缺点

1.维护引用计数消耗资源
2.循环引用

五.GC系统所承担的工作远比"垃圾回收"多得多。实际上,它们负责三个重要任务

1.为新生成的对象分配内存
2.从垃圾对象那回收内存

六.垃圾回收机制

Python中的垃圾回收是以引用计数为主,分代收集为辅

1.导致引用计数+1的情况:

  • 对象被创建,例如a=23
  • 对象被引用,例如b=a
  • 对象被作为参数,传入到一个函数中,例如func(a)
  • 对象作为一个元素,存储在容器中,例如list1=[a,a]

2.导致引用计数-1的情况:

  • 对象的别名被显式销毁,例如del a
  • 对象的别名被赋予新的对象,例如a=24
  • 一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变量不会)
  • 对象所在的容器被销毁,或从容器中删除对象

七.查看一个对象的引用计数

import sys
a = "hello world"
sys.getrefcount(a)

1.可以查看a对象的引用计数,但是比正常计数大1,因为调用函数的时候传入a,这会让a的引用计数+1
2.有三种情况会触发垃圾回收

  • 调用gc.collect()
  • 当gc模块的计数器达到阀值的时候
  • 程序退出的时候

八.gc模块的自动垃圾回收机制

1.必须要import gc模块,并且is_enable()=True才会启动自动垃圾回收。

2.这个机制的主要作用就是发现并处理不可达的垃圾对象。

3.垃圾回收 = 垃圾检查 + 垃圾回收

4.在Python中,采用分代收集的方法。把对象分为三代,一开始,对象在创建的时候,放在一代中,如果在一次一代的垃圾检查中,该对象存活下来,就会被放到二代中,同理在一次二代的垃圾检查中,该对象存活下来,就会被放到三代中

5.gc模块里面会有一个长度为3的列表计数器,可以通过gc.get_count()获取,gc.set_threshold(threshold0[, threshold1[, threshold2]) 设置自动执行垃圾回收的频率,例如(700,10,10)每一次计数器的增加,gc模块就会检查增加后的计数是否达到阀值的数目,700表示阈值,10表示没清理10次零代就清理一次二代,第二个10表示每清理10次一代链表就清理二代一次

注意点:
gc模块唯一处理不了的是循环引用的类都有__del__方法,所以项目中要避免定义__del__方法

python:gc --- 垃圾回收器接口 阅读详情

相关推荐

Python垃圾回收机制

Python垃圾回收机制

qq_59464154的博客 1071

python垃圾回收 (GC) 机制

Python 能够自动进行内存分配和释放,但了解 python 垃圾回收 (garbage collection, GC) 的工作原理可以帮助你写出更好更快的 Python 程序。Python 使用两种算法进行垃圾回收,分别是引用计数 (Reference Counting) 和分代回收 (Generational garbage collection)。 引用计数 引用计数,简而言之就是如果没有变量引用某一对象,那么该对象将会被回收。Python 中的每个变量都是对对象的引用,而不是对象本身。例如,赋值语

jeffery0207的博客 1万+

Python中使用gc模块进行垃圾回收

垃圾回收(Garbage Collection)是一种自动内存管理技术,它可以在程序运行时自动检测和回收不再使用的内存资源,以避免内存泄漏和内存溢出的问题。总结起来,Python中的gc模块提供了一些函数和方法,用于控制和调整垃圾回收的行为。垃圾回收的阈值是一个三元组,包含了在不同代(generation)触发垃圾回收的阈值。通常情况下,Python会根据一定的规则自动触发垃圾回收,但你也可以在需要的时候手动触发。接下来,我们可以使用gc模块的各种函数和方法来控制垃圾回收的行为。如有疑问,请随时提问。

code_welike的博客 861

Python 的垃圾回收机制(GC-GarbageCollection)

总体来说,在Python中,主要通过引用计数进行垃圾回收;通过 “标记-清除” 解决容器对象可能产生的循环引用问题;通过 “分代回收” 以空间换时间的方法提高垃圾回收效率。

TFATS的博客 2808

深入解析Python垃圾回收策略及`gc`模块的强大作用

垃圾回收是自动管理内存的机制,用于回收程序中不再使用的对象占用的内存。通过垃圾回收,Python可以减少内存泄漏、避免手动内存管理的繁琐,并有效避免因内存不足导致的程序崩溃。Python的垃圾回收机制是其内存管理的重要组成部分,既能有效地防止内存泄漏,也能在后台自动回收不再需要的对象。通过理解Python的垃圾回收策略,掌握gc模块的使用,开发者能够更高效地管理内存,调优程序性能。

铭渊老黄 397

Python教程:深入了解Python垃圾回收机制

在Python中,垃圾回收(Garbage Collection)是一种自动管理内存的机制,它可以自动识别和清理不再使用的对象,释放它们占用的内存空间,以提高内存利用率和程序性能。

旦莫的博客 2131

Python垃圾回收和GC模块

同样,并不是所有的对象都会被垃圾回收器追踪到,例如像用户创建类这样的复杂对象总是被跟踪的,但是一个只保存简单对象,例如整数和字符串的字典不会被跟踪,因为在那个特定的字典中没有对象持有对其的引用,不持有对其它元素的引用的简单对象,如整数和字符串,永远不会被跟踪。一般来说,垃圾回收器不需要调整就可以运行良好,Python 的开发团队选择了常见情况的默认值,如果你确实需要调整垃圾回收的工作方式,你可以使用 Python 的 gc 模块,gc 模块为垃圾回收器的行为提供了编程接口,并可配置对哪些对象进行跟踪。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows]

(1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。

weixin_43101935的博客 1万+

深入垃圾回收:理解GC的核心算法与实现

在计算机科学中,垃圾回收是一种自动化内存管理技术。它的主要任务是检测和回收不再被程序使用的内存,从而避免内存泄漏,并确保系统资源的高效利用。在没有GC的编程世界里,开发者必须手动管理内存。这意味着,每当分配内存时,开发者需要明确释放内存空间,避免内存泄漏、悬垂指针等复杂问题的出现。然而,这种手动管理非常容易出错。GC的引入为程序员解放了大量精力,使得内存管理更加简洁、安全。《垃圾回收的算法与实现》这本书深入探讨了GC的各类算法及其在不同编程语言中的具体实现。

四楼没电梯的专栏 1995

潇洒郎: 小白一次性成功——红米 Note 12 5G Android12 系统13.0.16/14.0.9 小米红米手机解BL锁+ROOT-刷面具—官方ROM下载-线刷降级—解锁system系统分区

小白一次性成功——红米 Note 12 5G Android12 系统13.0.16/14.0.9 小米红米手机解BL锁+ROOT-刷面具—官方ROM下载-线刷降级—解锁system系统分区

潇洒郎的博客 4583

强化学习实战——OpenAI Gym环境配置+实战演示(win10)

遇到问题:无法安装pickle5原因是:python3.8与该包不兼容,必须降python3.7的版本。

LZL2020LZL的博客 4898

python得垃圾回收机机制gc

一.为什么要有垃圾回收 解释器在执行到定义变量得语法时,会申请内存空间来存放变量得值,但是由于内存空间是有限得,所以这就涉及到了内存回收问题了,当一个变量值没有用了(简称垃圾),这种时候就应该回收掉这个变量值得内存空间。 二.什么是垃圾回收机制 垃圾回收机制(简称GC)是Python解释器自带一种机,专门用来回收不可用的变量值所占用的内存空间 三.为什么要用垃圾回收机制 程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是

weixin_43999932的博客 1万+

RK3568平台YOLOv11模型部署全流程实战:环境搭建、模型转换与性能优化解析

在AI边缘计算领域,瑞芯微RK3568芯片凭借其强大的NPU算力和丰富的接口资源,成为了众多开发者的首选平台。然而,瑞芯微官方文档虽然提供了YOLO11预训练模型的部署方案,但对于需要自定义数据集训练的开发者来说,从模型训练到板端部署的完整流程却缺乏详细指导。本文将带你走完从环境搭建、数据准备、模型训练到最终板端部署的完整技术路线,并分享实际开发中遇到的各种坑点和解决方案。让我们一起探索如何在RK3568平台上实现30FPS稳定推理的YOLO11目标检测应用!

LXY_LOVE36的博客 119

Python的垃圾回收机制,详解Python的GC体系

垃圾回收即简称为GC,是Python,Java等高级语言所使用的内存回收机制,由虚拟机帮助我们管理内存,让它自动把我们去追踪和回收内存中的对象。没有作用的对象就是垃圾,虚拟机就是扫地机器人,在某个时机自动帮我们清除垃圾。区别于C和C++这种让用户自己进行内存管理的方式,由虚拟机代用户管理内存。让用户自己进行内存管理的方式固然自由方便,但是对编码者编程功底和程序理解的要求也要更高。而且这样也可能导致大量难以发现并且危害巨大的bug,如造成内存泄漏,产生野指针和悬挂指针等。

weixin_64569462的博客 3071

在 SAP 中实现“租赁资产”管理,核心是把 IFRS16/ASC842 等新租赁准则的要求落地到系统

摘要:本文详细介绍了在SAP S/4HANA系统中实现IFRS16/ASC842租赁准则的具体操作流程。主要内容包括:1) 系统前置配置,如激活租赁会计组件、定义租赁类型和会计科目;2) 租赁合同创建与主数据维护;3) 初始确认的会计处理;4) 日常折旧计提和租金支付流程;5) 合同变更与终止管理。通过RE-FX-LM模块与固定资产模块的集成,系统可自动生成使用权资产和租赁负债,支持从合同创建到报表披露的全生命周期管理,确保符合新租赁准则要求。

金牌架构师 983

PCL 平面点云的凹多边形边界提取【2025最新版】

平面点云的凹多边形边界提取及边界轮廓线绘制。博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 7183

python垃圾回收机制

Python分代回收中的阈值是指两个用于判断对象是否应该被垃圾回收的阈值:第一个是每代的阈值,第二个是总体的阈值。每代的阈值指的是每个分代的垃圾回收阶段执行的次数。每当达到每代的阈值时,Python会触发分代垃圾回收。总体的阈值则是用于在分代回收期间控制是否触发全局垃圾回收(即回收所有代)的阈值。当某个分代的垃圾回收次数达到总体的阈值时,Python会触发全局垃圾回收。

leshen_88的博客 3623

pyecharts在jupyter notebook中不能够渲染图表问题。

在使用jupyter notebook中使用pyecharts绘制可视化图表的时候,发现图表不能渲染到页面中,生成的html是没问题的,本文主要解决在jupyter notebook中不能渲染这个问题。

猿小白的博客 1161

Python:gc模块使用和垃圾回收机制

简介:gc模块即Python中垃圾回收模块,它提供可选的垃圾回收器的接口。同时提供对回收器找到但是无法释放的不可达对象的访问。由于 Python 使用了带有引用计数的回收器,如果你确定你的程序不会产生循环引用,你可以关闭回收器。可以通过调用 gc.disable() 关闭自动垃圾回收。 Python中垃圾回收: python的垃圾回收器把所有对象分类为三代,其依据是对象在多少次垃圾回收后幸存。新建对象会被放在最年轻代(第 0 代)。如果一个对象在一次垃圾回收后幸存,它会被移入下一个较老代。由于第 2 代是最

we chat:玩转测试开发 5063

am62x A53与R5F通信

AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。

鹰之翔 1357

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Go 语言编程 — GC 垃圾回收

目录 文章目录目录GC常见的 GC 实现方式参考文档 GC GC(Garbage Collection,垃圾回收)是一种自动内存管理的机制。相对于 C、C++ 以及 Rust 等编程语言使用手动的方式管理内存。 当程序向操作系统申请的内存不再需要时,垃圾回收主动将其回收并供其他代码进行内存申请时候复用,或者将其归还给操作系统,这种针对内存级别资源的自动回收过程,即为垃圾回收。而负责垃圾回收的程序组件,即为垃圾回收器。 一方面,程序员受益于 GC,无需操心、也不再需要对内存进行手动的申请和释放操作,GC 在程

烟云的计算 2304

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2、Garbage collection(GC,垃圾回收)

Garbage collection(GC,垃圾回收)

融码一生:专注 Python、C/C++、Linux、机器学习 & 深度学习、NLP、算法领域分享 1080

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python_垃圾回收机制之GC模块③

一.垃圾回收机制 Python中的垃圾回收是以引用计数为主,分代收集为辅。 1、导致引用计数+1的情况 对象被创建,例如a=23 对象被引用,例如b=a 对象被作为参数,传入到一个函数中,例如func(a) 对象作为一个元素,存储在容器中,例如list1=[a,a] 2、导致引用计数-1的情况 对象的别名被显式销毁,例如del a 对象的别名被赋予新的对象,例如a=24 一个对象......

G_SANGSK的博客 6万+

GC(垃圾回收)解析

GC ,全称 Garbage Collection ,即垃圾回收,是一种自动内存管理的机制。当程序向操作系统申请的内存不再需要时,垃圾回收主动将其回收并供其他代码进行内存申请时候复用,或者将其归还给操作系统,这种针对内存级别资源的自动回收过程,即为垃圾回收。而负责垃圾回收的程序组件,即为垃圾回收器。一方面,程序员受益于 GC,无需操心、也不再需要对内存进行手动的申请和释放操作,GC 在程序运行时自动释放残留的内存。

General_zy的博客 2947

Python 垃圾回收机制 GC 深度解析(三)

Python 的垃圾回收机制综合运用了引用计数、标记 - 清除算法和分代回收算法,有效地解决了内存管理中的各种问题。引用计数提供了基本的内存回收功能,标记 - 清除算法解决了循环引用问题,分代回收算法提高了回收效率。同时,Python 的gc模块为开发者提供了灵活的控制和监控垃圾回收过程的手段。

Android开发领域创作者 1120

4、垃圾回收机制(gc 模块)

垃圾回收机制(gc 模块)

融码一生:专注 Python、C/C++、Linux、机器学习 & 深度学习、NLP、算法领域分享 1458
上一篇: Python生成器的教程
下一篇: Python中模块是什么?
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值