标签:内存占用 pyc 垃圾回收 存在 效率 python 变量 pre python程序
1.如果我们定义了一个变量,而我们没有用python解释器取运行的时候,这个变量其实就是很普通的几个字符而已。而当我们用Python解释器取运行它的时候,那字符进入了内存,才会有变量这个概念。也就是说变量是存放在内存当中的。
2.但是说变量只是存在内存中并没有很具体,实际上在每定义一个变量就会在这个内存的大空间中开辟一个小空间
1.引用计数是针对变量值的
2.比如定义一个变量
height = 180
x = height # x是在引用height,180的引用计数加1
这个时候引用计数是为2,
del x 释放的是引用计数,这时候180的引用计数为1
del height 这个时候180的引用计数为0
1.当我们定义一个有效的变量时,这时候会在内存中自动分配一个小的存储空间给我们定义的变量的值,但是当我们让变量名接收一个其它的值的时候,那我们一开始所定义的那个变量的值就没有了变量名来接收,此时这个变量值就会看做成是垃圾,python就会处理这个垃圾,释放10的内存占用,这就是python的垃圾回收机制
2.也就是说,当变量值的引用计数为0的时候,触发了垃圾回收制,释放一开始给他开辟的内存空间
1.为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。
2.在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。
标签:内存占用 pyc 垃圾回收 存在 效率 python 变量 pre python程序
原文地址:https://www.cnblogs.com/xichenHome/p/11265194.html