内存结构中分栈区间和堆区间,栈区间中内存是系统自动开启自动释放。堆区间的内存需要手动申请手动释放。但是目前绝大部分编程语言,都提供了一套属于自己的关于堆中的内存的管理方案 。python中垃圾回收机制是用来管理堆中的内存的释放
python中的数据都是存在堆中的,数据的地址都是在栈区间。
1.内存的开辟
python中将值赋给变量的是,会先在堆中开辟空间将数据存起来,然后再数据对应的地址返回给变量,存在栈中。
但是如果数据是数字和字符串,会先缓存区中查看这个数据之前是否已经创建过,如果没有就去创建空间存数据,然后将地址返回。
如果之前已经创建过就直接将之前的地址返回
2.内存的释放 --> 垃圾回收机制
系统每隔一定的时间就会去检测当前程序中所有的对象的引用计数值是否为0;
如果对象的引用计数是0对象对应的内存就会被销毁,如果不是0就不销毁
3.引用计数
每一个对象都有引用计数属性,用来存储当前对象被引用的次数。
可以通过sys模块中的getrefcount去获取一个对象的引用计数值
网友评论