Python内存分析
内存机制
转述:内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构。
Python的内存机制和Java差不多,分为i栈内存区、堆内存区、常量区、数据区
换一句别人的话来说:内存空间在逻辑上分为三部分:代码区、静态数据区和动态数据区,动态数据区又分为栈区和堆区
栈内存区
栈内存(Stack):栈内存比较小,但是速度快。一般存储运行方法的形参、局部变量、返回值。由系统自动分配和回收
堆内存
堆内存(Heap):对内存一般比较大,但是速度慢。一般放对象
静态存储区
静态存储区(Stastic):这个区域也可以叫做常量池。存储全局变量、静态变量、常量,常量包括final修饰的常量和String常量。系统自动分配和回收
数据区
数据区(Data):这个区域专门加载代码字节数据,方法数据、函数等.高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)控制代码区执行代码的切换.
变量在内存中的存储
可变数据和不可变数据
可变数据:列表(list)、字典(dict)
不可变数据:整型(int)、浮点型(float)、字符串型(String)、元组(tuple)
为什么要区别可变和不可变?
这里的可变和不可变指的是内存中的那块内容是否可变,当数据是可变的时候,对数据进行操作时并不需要重新申请新的内存空间,只需要在此数据空间后