【16】内存管理机制

1. 内存:栈区间、堆区间

:栈上的内存是系统自动开辟,自动释放
:堆上的内存需要手动开辟,手动释放。但在python中内存空间会通过python提供的内存管理机制自动管理

2. 内存管理机制

1)内存开辟

  • python中所有的变量都是保存在栈区间的,并且所有的变量都是保存的都是数据地址
  • 所有的对象(数据)都是保存在堆区间
注意:变量赋值的原理:
  • 先在堆中开辟地址,然后再讲地址返回给变量;(通用)
  • 但如果数据是数字或者字符串,会先在内存中查看之前是否已经存储过这个输入数据,若存储过,则返回之前的地址,若没有存储过则会开辟空间存数据。

2)内存的释放(垃圾回收机制)

  • python中每一个对象都有一个默认的属性来保存这个对象的引用计数。(这个对象的地址被多少个变量或者数据存储,如果一个变量存了一个对象的地址,则这个变量是对这个对象引用)
  • 一个对象是否销毁,就看这个对象的引用计数是否为0,若为0则销毁。
from sys import getrefcount
getrefcount(对象)  -> 获取对象的引用计数

你可能感兴趣的:(【16】内存管理机制)