昨天内容回顾

1.  操作文件的三个步骤:

1.  打开文件:硬盘的空间被操作系统持有,文件对象被用用程序持续

2.  操作文件:读写操作

3.  释放文件:释放操作系统对硬盘空间的持有

2.  基础的读写

with open('1.txt', 'r', encoding='utf-8') as rf, open('2.txt', 'w', encoding='utf-8') as wf:
  rf.read() # 一次性读完
  rf.read(10) # 读取10个字符
  rf.readline() # 一次读一行
  rf.readlines() # 将所有行读出,存放为一个list

wf.write('写入的内容')
wf.flush() # 主动将内存的数据刷新到硬盘
wf.writelines(['123\n', '456\n'])

3.边读边写:重点

with open('1.txt', 'r', encoding='utf-8') as rf:
  with open('2.txt', 'w', encoding='utf-8') as wf:
    for line in rf:
    wf.write(line)

4.  模式

主模式:r | w | a | x
r: 文件必须有的读,游标默认在开头,游标可以移动
w:文件有清空,无创建的写模式,虽然游标可以移动,但该模式一定会清空文件
a:文件有追加,无创建的写模式,游标永远从末尾开始操作
x:文件无创建写,有报错

从模式:t | b | +
t:默认模式,以字符形式操作
b:以字节形式操作
+:可读可写

5.seek(offset, type)

-- offset: 偏移的字节数
-- type:0 - 游标从头开始 | 1 - 游标从当前开始 | 2 - 游标从末尾开始
-- 游标操作必须在rb模式下

今日主要内容

1.  引用计数:垃圾回收机制的的机制

1.  变量的值被引用,该值的引用计数 +1

2.  变量的值被解绑,该值的引用计数  -1

3.  用计数为0时就会被垃圾回收机制回收

2.  引用计数会出现循环引用问题:相互引用无法释放

1.  连个变量引用其值,值之间又相互引用

2.  变量与值进行解绑,但是值之间还存在相互引用,导致值的引用计数永远是 >0

3.  引用计数>0的值永远无法被引用计数机制回收导致内存泄露

3.  标记清除:解决循环引用问题

所有线程能访问的栈区变量,称为 gc roots对象

1.  所有gc roots对象可以直接或间接访问到的变量值,都会被 标记机制 标记为存活状态

2.  将所有存活状态的值形成新的拷贝,变量完成重新引用

3.  清楚机制 会将之前所产生的值都进行回收

4.  分代回收:采用的还是引用计数来回收,是对该机制的一个优化

1.  杠产生的变量值房子啊新生代中高频率检查,如果引用计数为0,就是采用引用计数机制回收,长期存活变量值经过多次检查后会提高分代

2.  分代越高,检查频率越低,且还能继续提高一直存活的变量值的分代,从而来提高整体垃圾回收机制的效率。

Python--day09(内存管理、垃圾回收机制)的更多相关文章

  1. [CLR via C#]21. 自动内存管理(垃圾回收机制)

    目录 理解垃圾回收平台的基本工作原理 垃圾回收算法 垃圾回收与调试 使用终结操作来释放本地资源 对托管资源使用终结操作 是什么导致Finalize方法被调用 终结操作揭秘 Dispose模式:强制对象 ...

  2. python内存管理&垃圾回收

    python内存管理&垃圾回收 引用计数器 环装双向列表refchain 在python程序中创建的任何对象都会放在refchain连表中 name = '张三' age = 18 hobby ...

  3. [Python之路] 内存管理&垃圾回收

    一.python源码 1.准备源码 下载Python源码:https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz 解压得到文件夹: 我们主要关 ...

  4. Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC

    [转载] :http://my.oschina.net/rouchongzi/blog/171046 Java之类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指 ...

  5. python之MRO和垃圾回收机制

    一.MOR 1.C3算法简介 为了解决原来基于深度优先搜索算法不满足本地优先级,和单调性的问题. python2.3版本之后不管是新式类还是经典类,查找继承顺序都采用C3算法 2.算法原理 C3算法的 ...

  6. python 全局变量与局部变量 垃圾回收机制

    掌握L.E.G.B(作用域) 掌握局部作用域修改全局变量 步骤- 1.命名空间和作用域 命名空间:变量名称与值的映射关系作用域:变量作用的区域,即范围. 注意:class/def/模块会产生作用域:分 ...

  7. 内存管理 垃圾回收 C语言内存分配 垃圾回收3大算法 引用计数3个缺点

    小结: 1.垃圾回收的本质:找到并回收不再被使用的内存空间: 2.标记清除方式和复制收集方式的对比: 3.复制收集方式的局部性优点: https://en.wikipedia.org/wiki/C_( ...

  8. Python垃圾回收机制--完美讲解!

    转自: http://www.jianshu.com/p/1e375fb40506 先来个概述,第二部分的画述才是厉害的. Garbage collection(GC) 现在的高级语言如java,c# ...

  9. python垃圾回收机制(Garbage collection)

    由于面试中遇到了垃圾回收的问题,转载学习和总结这个问题. 在C/C++中采用用户自己管理维护内存的方式.自己管理内存极其自由,可以任意申请内存,但也为大量内存泄露.悬空指针等bug埋下隐患. 因此在现 ...

  10. 浅谈python垃圾回收机制

    引入 ​ 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...

随机推荐

  1. javascript中apply、call和bind的区别及方法详解

    文章目录   apply.call apply.call 区别 apply.call实例 数组之间追加 获取数组中的最大值和最小值 验证是否是数组(前提是toString()方法没有被重写过) 类(伪 ...

  2. Servlet生命周期 、Filter生命周期、Listering(监听器)总结

    Servlet生命周期简述 (1)加载和实例化 当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求:如果不存在 ...

  3. 混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1值、ROC曲线的AUC值

    准确率.精确率(查准率).召回率(查全率).F1值.ROC曲线的AUC值,都可以作为评价一个机器学习模型好坏的指标(evaluation metrics),而这些评价指标直接或间接都与混淆矩阵有关,前 ...

  4. java~springboot~gradle里的docker集成

    在springboot里,我们的task任务可以添加docker构建的功能,在gradle集成环境里,直接可以实现编译,测试,打包镜像的流水线作业,很是方便! 下面分享给大家,在gradle里添加do ...

  5. python学习第九讲,python中的数据类型,字符串的使用与介绍

    目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...

  6. 如何快速高效简洁的打开软件 干净利索的windows快捷程序启动器

    本文的主题是如何高效快捷的打开你想要打开的软件 本文介绍的应该是最简洁的一种方式,借助于windows内部的path进行设置 也可以认为是一种形式的windows应用启动器程序---win+R快速打开 ...

  7. 内核中 EXPORT_SYMBOL 标志分析

    内核版本:Linux-4.19 1. EXPORT_SYMBOL 的作用: EXPORT_SYMBOL 定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在其它内核模块中直接调用,即使用 E ...

  8. 【转载】 Sqlserver中通过Select Into语句快速单表备份

    在Sqlserver数据库中,备份数据的方式有很多种,可以使用整个数据库备份,也可使用导出包含数据和架构的脚本文件的方式来进行单表或多表数据的备份,其实还有一种Select Into的方式可以快速备份 ...

  9. 【译】使用 LINQ 合并 IEnumerable 序列

    Zip 方法允许把序列中的元素通过交织将 IEnumerable 序列连接在一起.Zip 是一种基于 IEnumerable 的扩展方法.例如,将具有年龄的名称集合压缩在一起: var names = ...

  10. C#--深入理解类型

    今日无事,回顾了一下C#基础知识,颇有收获,就自己的理解,写了这篇文章,如有不对,欢迎指正. C#中的类型可以分为两类:值类型与引用类型,如下图所示. 值类型通常被分配到线程的堆栈上,而引用类型则被分 ...