垃圾回收:引用计数与分代收集机制

当引计数为0时,该对象⽣命就结束了。

计数机制的优点:

1、简单

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

计数机制的缺点:

1、维护引计数

2、消耗资源循环引

list1    =   []

list2    =   []

list1.append(list2)

list2.append(list1)

list1list2相互引⽤,如果不存在其他对象对他们的引用list1list2的引用计数也仍然1,所占⽤的内存永远无法被回收这将是致命的。    对于如今的强⼤硬件,缺点1尚可接受,但是循环引导致内存泄露,注定python还将引⼊新的回收机制。(分代收集)

.垃圾回收机制

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

1、导致引用计数+1的情况

对象被创建,例如a=23      

 对象被引⽤,例如b=a   

对象被作为参数,传个函数中,例如func(a)       

对象作为⼀个元素,存储在容器中,例如list1=[a,a]   

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

对象的别名被显式销毁,例如del    a      

 对象的别名被赋予新的对象,例如a=24   

个对象离开它的作域,例如f函数执⾏完毕时,func函数中的局部变量(全局变量不会)   

对象所在的容器被销毁,或从容器中删除对象   

3、查看一个对象的引用计数

import    sys

a    =    "hello    world"

 sys.getrefcount(a)

可以查看a对象的引用计数,但是⽐正常计数1,因为调函数的时候传入a,这会让a的引用计数+1

 

4.有三种情况会触发垃圾回收:

  1. gc模块的计数器达到阀值的时候,自动回收垃圾
  2. gc.collect(),手动回收垃圾
  3. 程序退出的时候,python解释器来回收垃圾

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 行程APP简单介绍

登录模块 数据库设计如图所示创建了如上的数据库由于没有注册功能人为添加了两个用户: 数据库创建语句: public static final String CREATE_task "create table user (" "id integer primary key autoincrement, ""remenber…

python中主要内建函数

1.__getattribute__属性访问拦截器(内建属性 class Foo(object): def __init__(self): self.a 100 def __getattribute__(self, name): if name "a": # return self.a # __getattribute__("a") return super(Foo,self).__getattribute__(&qu…

LeetCode 1561. 你可以获得的最大硬币数目

文章目录1. 题目2. 解题1. 题目 有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币: 每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那…

最近做项目的一些关于重构方面的总结

这半年做专题和项目的过程中,遇到一些有时很难想到问题,今天在这总结以下: 1. 关于width:100%缩小窗口时背景图片出现空白bug ,刚开始找了半天方法都没解决,最后在里面加了最小宽度给解决了, 例如&#xff…

微信小程序 地图组件使用

本地图程序利用map组件,以及使用它的markers,polyline属性分别设置地图两个位置的标志以及他们之间的连线,利用腾讯地图的API对两个地点进行查询,动态设置地图的经纬度,以及动态初始化markers,polyline属性。 程序运行截图如下&a…

python中的集合set

集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的 集合对象还⽀持union(联合), intersection(交), difference(差)和 sysmmetric_difference(对称差集)等数学运算. >>> x set(abcd) >>> x {c…

LeetCode 1562. 查找大小为 M 的最新分组

文章目录1. 题目2. 解题1. 题目 给你一个数组 arr ,该数组表示一个从 1 到 n 的数字排列。有一个长度为 n 的二进制字符串,该字符串上的所有位最初都设置为 0 。 在从 1 到 n 的每个步骤 i 中(假设二进制字符串和 arr 都是从 1 开始索引的情…

HDOJ 3415 Max Sum of Max-K-sub-sequence

单调队列优化。。。。Max Sum of Max-K-sub-sequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4759 Accepted Submission(s): 1734Problem DescriptionGiven a circle sequence A[1],A[2],A[3]......A[n]…

DurOS语音开发

DuerOS语音开发项目,该项目通过搭载DuerOS开发者平台,利用平台开发的一组API规范,实现实时的语音播报功能。 整体流程示意图: 所用设备:树莓派微机系统、arduino与74HC595单片机、地图彩灯控制沙盘、小度语音。 数据流…

Sharepoint学习笔记—习题系列--70-573习题解析 -(Q40-Q44)

Question 40You need to send a single value from a consumer Web Part to a provider Web Part.Which interface should you use?A. IAlertNotifyHandlerB. IWebPartFieldC. IWebPartParametersD. IWebPartRow 解析:本题的目的是在Webpart之间传递“单值”(singl…

LeetCode 1563. 石子游戏 V(DP)

文章目录1. 题目2. 解题2.1 区间DP1. 题目 几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出。 游戏中的每一轮: Alice 会将这行石子分成两个 非空行(即,左侧行和右侧行…

python中进程创建—fork()

导入模块:import os 1.程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),复制父进程信息 2.子进程从fork()函数中得到返回值零 3.父进程从fork()函数中得到返…

个人简历小程序

为了熟练掌握微信小程序开发的一些基本技巧,熟悉微信小程序开发流程,特此,运用所学知识,做了一个个人简历小程序。 效果图如下: 代码如下: ① index.jsconst app getApp() Page({ data: { userInfo: {}…

Android的Fragment介绍

前言 fragment是从android3.0开始提出来的,用来支持大屏幕设备的ui设计。通过将activity划分为多个fragment,不仅提高了设计的灵活性,而且可以在程序运行时改变它们的特征,比如动态的修改,替换已有的fragment等等。 fr…

[Kaggle] Heart Disease Prediction

文章目录1. 数据探索2. 特征处理管道3. 训练模型4. 预测kaggle项目地址1. 数据探索 import pandas as pd train pd.read_csv(./train.csv) test pd.read_csv(./test.csv)train.info() test.info() abs(train.corr()[target]).sort_values(ascendingFalse)<class pandas.c…

python进程的回收—wait

1.os.wait()回收资源 os.wait()方法用来回收子进程占用的资源&#xff1a; import os import time ret os.fork() # 创建新的进程 一次调用&#xff0c;两次返回 if ret 0: # 子进程执行 # 子进程拿到的返回值是0 print("子进程&#xff1a;pid%d, ppid%d" % (…

Oracle数据库逻辑存储结构管理相关问题与解决

我们在Mysql数据库中&#xff0c;一般是登入进去一个数据库&#xff0c;紧接着就创建数据库实例&#xff1a;create databse XXX;但是在Oracle数据库就不行。在数据库连接过程中老是报监听失败的错误。在备份表空间的时候&#xff0c;设置表空间为备份模式&#xff0c;它提示我…

Python调用C的方法

参考&#xff1a;http://www.cnblogs.com/fxjwind/archive/2011/07/05/2098636.html http://amazingjxq.com/2012/01/09/python%E8%B0%83%E7%94%A8c%E5%87%BD%E6%95%B0/>>>cd /home/jxq/code/gcc -fPIC -shared bob_hash.c -o bob_hash.so然后在python里面用ctypes加载…

01.神经网络和深度学习 W2.神经网络基础

文章目录1. 二分类2. 逻辑回归3. 逻辑回归损失函数4. 梯度下降5. 导数6. 计算图导数计算7. 逻辑回归中的梯度下降8. m个样本的梯度下降9. 向量化10. 向量化的更多例子11. 向量化 logistic 回归12. 向量化 logistic 回归梯度输出13. numpy 广播机制14. 关于 python / numpy 向量…