python内存浅析
python内存浅析
栈内存区【stack】:用于直接分配数据,存取数度较快,数据存储不稳定,适用于小数据块的快速存取,一般在程序中用于存储变量数据。
方法区【data】:主要用于加载程序中的代码数据、二进制数据、方法数据等等程序运行需要的预加载数据
静态区【static】:主要用于加载存储程序中的一些静态数据、常量数据等等,在PYTHON中的不可变数据类型的数据也会存储在静态常量区内存中
堆内存【heap】:存储数据稳定持久,一般用于存储加载较为重量级的数据,如程序运行过程中的对象都是存在堆内存中的
一、不可变类型数据
一般的基本数据类型都是不可变类型
python中的一切都是对象,可以通过id()函数查询对象在内存中的地址数据,不可变数据类型是在定义了数据之后,修改变量的数据,变量不会修改原来内存地址的数据而是会指向新地址,原有的数据保留,这样更加方便程序中基本数据的利用率。
用python赋值皆标签的理念理解一下:
a=3:常量区中创建地址为8791523976080的值=3,用a标签贴在他身上。
b=a: b标签和a标签一样 贴在地址为8791523976080的值上
a=4:栈中创建地址为8791523976112的值=4,把a标签从”地址8791523976080”上取下贴在“地址8791523976112”上
此时b还是贴在”地址8791523976080”上
同理分析num[4]
发现原来 “4”这个常亮就是存在“地