Python内存管理机制
来源:互联网 发布:东莞广电网络多少兆 编辑:程序博客网 时间:2024/06/07 05:52
一、python内存
因为要调用while循环,循环内有temp变量,不清楚python是否会在每一轮循环结束后自动释放temp内存空间,做了一个内存测试,发现无论temp = none,还是del temp,只能销毁变量,无法完全释放内存空间。注:红色部分标出相同内存id。
0 366667321 36666720
2 36666708
4 36666684
5 36666672
6 36666660
7 36666648
8 36666636
9 366666243666672036666672
36666636
测试完毕后删除c可以看到,变量c和temp确实被销毁,只是他们指向的引用值仍然会在内存中存在。直至窗口关闭才自动释放,人工无法干预。
二、内存池机制
查看了相关的博客,更深一步了解python内存机制
Python的内存机制以金字塔行,-1,-2层主要有操作系统进行操作,
第0层是C中的malloc,free等内存分配和释放函数进行操作;
第1层和第2层是内存池,有Python的接口函数PyMem_Malloc函数实现,当对象小于256K时有该层直接分配内存;
第3层是最上层,也就是我们对Python对象的直接操作;
在 C 中如果频繁的调用 malloc 与 free 时,是会产生性能问题的.再加上频繁的分配与释放小块的内存会产生内存碎片. Python 在这里主要干的工作有:
如果请求分配的内存在1~256字节之间就使用自己的内存管理系统,否则直接使用 malloc.
这里还是会调用 malloc 分配内存,但每次会分配一块大小为256k的大块内存.
经由内存池登记的内存到最后还是会回收到内存池,并不会调用 C 的 free 释放掉.以便下次使用.对于简单的Python对象,例如数值、字符串,元组(tuple不允许被更改)采用的是复制的方式(深拷贝?),也就是说当将另一个变量B赋值给变量A时,虽然A和B的内存空间仍然相同,但当A的值发生变化时,会重新给A分配空间,A和B的地址变得不再相同
而对于像字典(dict),列表(List)等,改变一个就会引起另一个的改变,也称之为浅拷贝
- Python中的内存管理机制
- 解读Python内存管理机制
- 解读Python内存管理机制
- 解读Python内存管理机制
- 解读Python内存管理机制
- python的内存管理机制
- Python内存管理机制
- python的内存管理机制
- Python内存管理机制
- Python内存管理机制
- python的内存管理机制
- Python内存管理机制
- python的内存管理机制
- python的内存管理机制
- python的内存管理机制
- Python内存管理机制
- python的内存管理机制
- Python的内存管理机制
- Effective Java
- Material Design-CoordinatorLayout
- 《算法艺术与信息学竞赛》之 递归与分治法 例二 三色多边形
- Hibernate入门学习(3)----第一个Hibernate例子
- 商品发布的复杂逻辑
- Python内存管理机制
- Weblogic 性能调优
- Linux 学习 (五) DNS配置
- SOI模型
- 祝贺! 61人新当选为中科院院士! 外籍院士中有2名诺贝尔奖获得者
- Ring3/Ring0的四种通信方式
- 位运算
- 网络运维工程师 ,需要掌握知识的总结。
- linux手动创建oracle实例全过程