009 Python变量内存管理
目录
一、变量存哪了?x = 10 变量存放在内存中这句话太宽泛了,我们把它具体化。 对于电脑内存这个大内存,每定义一个变量就会在这个大内存中开辟一个小空间,小空间内存放变量值10,然后内存给这个小空间一个变量名x(门牌号),x指向10。 二、Python垃圾回收机制对于p1.py,如果我们再加上一段代码 2.1 引用计数从上述的解释我们可以知道只要某个变量值绑定着门牌号,就不是垃圾,反之变量值没有绑定着门牌号,这个变量值就是垃圾,python就会自动清理这个垃圾。这里我们对于这个门牌号给定一个专业的解释,在python中这个门牌号被称作引用计数。 x = 10 # 10引用计数加1为1 y = x # 10引用计数加1为2 x = 11 # 10引用计数减1为1;11引用计数加1为1 del y # 10引用计数减1为0,触发python垃圾回收机制,python清理10的内存占用 上述代码就是一个引用计数加减的过程。 三、小整数池为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。 # 因此当变量值在【-5:256】这个区间内,只要变量值相同,内存地址都一样 在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |