Python--day09(内存管理、垃圾回收机制)
昨天内容回顾
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(内存管理、垃圾回收机制)的更多相关文章
- [CLR via C#]21. 自动内存管理(垃圾回收机制)
目录 理解垃圾回收平台的基本工作原理 垃圾回收算法 垃圾回收与调试 使用终结操作来释放本地资源 对托管资源使用终结操作 是什么导致Finalize方法被调用 终结操作揭秘 Dispose模式:强制对象 ...
- python内存管理&垃圾回收
python内存管理&垃圾回收 引用计数器 环装双向列表refchain 在python程序中创建的任何对象都会放在refchain连表中 name = '张三' age = 18 hobby ...
- [Python之路] 内存管理&垃圾回收
一.python源码 1.准备源码 下载Python源码:https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz 解压得到文件夹: 我们主要关 ...
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
[转载] :http://my.oschina.net/rouchongzi/blog/171046 Java之类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指 ...
- python之MRO和垃圾回收机制
一.MOR 1.C3算法简介 为了解决原来基于深度优先搜索算法不满足本地优先级,和单调性的问题. python2.3版本之后不管是新式类还是经典类,查找继承顺序都采用C3算法 2.算法原理 C3算法的 ...
- python 全局变量与局部变量 垃圾回收机制
掌握L.E.G.B(作用域) 掌握局部作用域修改全局变量 步骤- 1.命名空间和作用域 命名空间:变量名称与值的映射关系作用域:变量作用的区域,即范围. 注意:class/def/模块会产生作用域:分 ...
- 内存管理 垃圾回收 C语言内存分配 垃圾回收3大算法 引用计数3个缺点
小结: 1.垃圾回收的本质:找到并回收不再被使用的内存空间: 2.标记清除方式和复制收集方式的对比: 3.复制收集方式的局部性优点: https://en.wikipedia.org/wiki/C_( ...
- Python垃圾回收机制--完美讲解!
转自: http://www.jianshu.com/p/1e375fb40506 先来个概述,第二部分的画述才是厉害的. Garbage collection(GC) 现在的高级语言如java,c# ...
- python垃圾回收机制(Garbage collection)
由于面试中遇到了垃圾回收的问题,转载学习和总结这个问题. 在C/C++中采用用户自己管理维护内存的方式.自己管理内存极其自由,可以任意申请内存,但也为大量内存泄露.悬空指针等bug埋下隐患. 因此在现 ...
- 浅谈python垃圾回收机制
引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...
随机推荐
- 小白学习Python之路---开发环境的搭建
本节内容 1.Python的介绍 2.发展史 3.安装Python 4.搭建开发环境 5.Hello World程序 一.Python的介绍 Python的创始人为荷兰人吉多·范罗苏姆(Guido v ...
- 关于Bulk加载模式
Bulk加载模式是Informatica提供的一种高性能数据加载模式,它利用数据库底层机制,依靠调用数据库本身提供的Utility来进行数据的加载 该方式将绕过数据库的log记录,以此提高数据库加载性 ...
- Docker & ASP.NET Core (3):发布镜像
第一篇:把代码连接到容器 第二篇:定制Docker镜像 上一篇文章最后有个问题,定制的镜像无法正常运行: 这可能是由于无法找到要运行的dll引起的问题. 之前的Dockerfile的文档我是按照微软的 ...
- Java下载创建好的Excel模板
1.废话不多说,直接上源码 //从数据库取数据创建表格 private HSSFWorkbook exportStudentInfo(List<ExamStudentVo> student ...
- 【朝花夕拾】Android安全之(一)权限篇
前言 从Android6.0开始,Android系统对权限的处理产生了很大的变化.如果APP运行的设备系统版本为Android6.0或更高,并且target在23或更高,那么danger ...
- string类的几种方法
string str="123abc456";int i=3;1 取字符串的前i个字符 str=str.Substring(0,i); // or str=str.Remov ...
- Java中的基本类型转换,数据溢出原理
java中的数据类型 java是一种强类型语言,在java中,数据类型主要有两大类,基本数据类型和引用数据类型,不同的数据类型有不同的数据存储方式和分配的内存大小. 基本数据类型中,各数据类型所表示的 ...
- Tesseract 在 windows 下的安装及简单应用
Tesseract 是一个开源的 OCR 引擎,可以识别多种格式的图像文件并将其转换成文本,最初由 HP 公司开发,后来由 Google 维护.下载地址:https://digi.bib.uni-ma ...
- webpack 样式表抽离成专门的单独文件并且设置版本号
先以下的 css 的处理我们都把 mode 设置为 production. webpack4 开始使用: mini-css-extract-plugin插件, 1-3 的版本可以用: extract- ...
- Parcelable 小记
Parcelable 类,接口类,用于数据的序列化封装.常见的Bundle,Intent类都实现了该类. 实现该类需要实现writeToParcel和describeContents方法,最后还需 ...