网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

CPython解释器引用技术的两个问题

引用技术的两个问题
一:循环引用的情况下,引用计数就不好使了。
a="x"
b=a
a=b
解决方法:
标记清除变量的概念:
变量:是由3个部分组成,1、变量名 2、赋值符号 3、变量值
变量都是内在内存中的,在内存中有划分:
栈:变量名(不存值,只是指向一个内存地址)
堆:变量值 --程序员只操控堆,也就是变量值,无法操控栈区。

比如:x="10" , x="20" 这就意味着 变量的值换了一个内存地址。

我们都是通过变量名(栈)访问的变量值(堆)
标记的过程:扫描栈区里所有的内容,将所有栈区的对像,将直接或间接访问的对像标记成存活对像,其余的都为非存活,应该被清除。

通过栈区可到达的对像是gc roots对像


标记清除:


二:效率问题(低), 引用计数引用一次,值就加1,减少就减一 (分代回收解决)
cpython不是时刻都在回收,而是隔一段时间去回收一次,这样就保证效率,cpython使用了分代回收,
1、老年代: 扫描频率比较低(可能是隔1小时扫描一次)
老的数据可能还在经常用

2、年轻代: 扫描频率比较高(可能是隔5分钟扫描一次)
因为新的数据用一次就不用了,可能会被抛弃,这样有利于内存空间的整理

这样就提升扫描效率

cpython 解释器垃圾回收机制是,如果计数引用为零的话会回收,但这样的话,循环引用就无法回收了(计数不可能为0,循环引用会造成内存溢出)。



创新互联-专业网站定制、快速模板网站建设、高性价比双台子网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式双台子网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖双台子地区。费用合理售后完善,10多年实体公司更值得信赖。


当前标题:CPython解释器引用技术的两个问题
链接URL:http://bjjierui.cn/article/gjpgcp.html

其他资讯