复习

'''
文件处理 1.操作文件的三步骤
-- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续
-- 操作文件:读写操作
-- 释放文件:释放操作系统对硬盘空间的持有 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
# 2.变量的值被解绑,该值的引用计数 -1
# 3.引用计数为0时就会被垃圾回收机制回收

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

# 1.两个变量引用其值,值之间又相互引用
# 2.变量与值进行解绑,但是值之间还存在相互引用,导致值得引用计数永远 >0
# 3.引用计数>0的值永远无法被引用计数机制回收,导致内存泄露

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

# 所有线程能访问到的栈区变量,称之为 gc roots对象
# 1.所有gc roots对象可以直接或间接访问到的变量值,都会被 标记机制 标记为存活状态
# 2.将所有存活状态的值形成新的拷贝,变量完成重新引用
# 3.清除机制 会将之前所有产生的值都进行回收

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

# 1.刚产生的变量值放在新生代中高频率检查,如果引用计数为0,就是采用引用计数机制回收,长期存活的变量值经过多次检查后会提高分代
# 2.分带又高,检查频率越低,且还能继续提高一直存活的变量值的分带,从而来提高整体垃圾回收的效率

day09内存管理的更多相关文章

  1. day-09内存管理

    内存管理 引用计数:垃圾回收机制的依据 # 1.变量的值被引用,该值的引用计数 +1# 2.变量的值被解绑,该值的引用计数 -1# 3.引用计数为0时就会被垃圾回收机制回收​ 引用计数会出现循环引用问 ...

  2. day09 详解内存管理机制

    """ 今日内容:详解内存管理 1.引用计数 在内存中为了对变量的值进行标记从而方便管理,采用引用计数的方式对变量进行标记. (1)如果变量的值被引用一次,那么该变量的引 ...

  3. .NET基础拾遗(1)类型语法基础和内存管理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  4. PHP扩展-生命周期和内存管理

    1. PHP源码结构 PHP的内核子系统有两个,ZE(Zend Engine)和PHP Core.ZE负责将PHP脚本解析成机器码(也成为token符)后,在进程空间执行这些机器码:ZE还负责内存管理 ...

  5. linux2.6 内存管理——逻辑地址转换为线性地址(逻辑地址、线性地址、物理地址、虚拟地址)

    Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同.Linux运行在虚拟存储空间,并负责把系 ...

  6. linux2.6 内存管理——概述

    在紧接着相当长的篇幅中,都是围绕着Linux如何管理内存进行阐述,在内核中分配内存并不是一件非常容易的事情,因为在此过程中必须遵从内核特定的状态约束.linux内存管理建立在基本的分页机制基础上,在l ...

  7. Objective-C内存管理之引用计数

    初学者在学习Objective-c的时候,很容易在内存管理这一部分陷入混乱状态,很大一部分原因是没有弄清楚引用计数的原理,搞不明白对象的引用数量,这样就当然无法彻底释放对象的内存了,苹果官方文档在内存 ...

  8. Quartz2D内存管理

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #239619 } p.p2 ...

  9. 浅谈Linux内存管理机制

    经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这 ...

随机推荐

  1. docker安装,err:exit status 255,提示找不到虚拟机IP

    我遇到这个问题是因为,BIOS没有打开虚拟化技术,导致虚拟机无法成功创建,自然找不到IP. 解决: 1.进入BIOS,高级选项卡下,找到虚拟化技术开关,打开即可.具体做法,可搜网文. 2.删除原来自动 ...

  2. centos7设置静态IP地址

    1.查看IP配置信息 ifconfig 如上图所示,我的em1网卡已配置好 2.编辑em1对应的配置文件,位于/etc/sysconfig/network-scripts/ifcfg-你的网卡名字 操 ...

  3. python 日常代码 tips

    1. 官方示例很多情况是用的列表的形式,bokeh本身不是基于pandas构建的可视化工具,所以它基本上是用的python自己的数据结构字典.列表:我们做数据分析肯定是基于pandas,以上就是做了一 ...

  4. win7 64位系统下安装autoitlibrary库遇到问题解决

    转载来自http://blog.sina.com.cn/s/blog_53f023270101skyq.html 今天需要在win7 64位系统下安装autoitlibrary库,起初安装好了robo ...

  5. 动态代理处理service

    /* 动态代理处理service * 1.动态代理的核心是切面编程,去除重复代码: * 2.通过反射+注解可以灵活的获取传入对象内容: * 3.通过try+catch将多个操作包裹,实现事物的原子性: ...

  6. Google搜索中的突变XSS-JavaScript Library Introduced XSS Flaw in Google Search

    前言2018年9月26日,开源Closure库(最初由谷歌创建并用于谷歌搜索)的一名开发人员创建了一个提交,删除了部分输入过滤.据推测,这是因为开发人员在用户界面设计方面出现了问题.但此次提交的开发人 ...

  7. 在C#中,Windows Console控制台 设置控制台标题、禁用关闭按钮、关闭快速编辑模式、插入模式

    设置控制台标题 禁用关闭按钮 关闭快速编辑模式 关闭插入模式 设置控制台标题.禁用关闭按钮 #region 设置控制台标题 禁用关闭按钮 [DllImport("user32.dll&quo ...

  8. React 学习过程中常见的错误

    1,  react报错Module not found: Error: Can't resolve     解决:  一般是加载文件的路径写错了:      

  9. Vue.js数据响应基础原理

    许多前端JavaScript框架(例如Angular,React和Vue)都有自己的数据相应引擎.通过了解相应性及其工作原理,您可以提高开发技能并更有效地使用JavaScript框架.在视频和下面的文 ...

  10. VS工具箱中添加DevExpress控件

    关闭所有VS进程: ①使用控制台进入DevExpress安装目录: D:\DevExpress\Components\Tools\ ②添加DevExpress控件:ToolboxCreator.exe ...