从品牌网站建设到网络营销策划,从策略到执行的一站式服务
引用技术的两个问题
一:循环引用的情况下,引用计数就不好使了。
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,循环引用会造成内存溢出)。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图