校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 脚本语言 > Python
题目

说一下python的内存池机制。

解答

Python的内存机制以金字塔行

-1,-2层主要有操作系统进行操作;
第0层是C中的malloc,free等内存分配和释放函数进行操作;
第1层和第2层是内存池,有Python的接口函数PyMem_Malloc函数实现,当对象小于256K时有该层直接分配内存;
第3层是最上层,也就是我们对Python对象的直接操作;

在 C 中如果频繁的调用 malloc 与 free 时,是会产生性能问题的.再加上频繁的分配与释放小块的内存会产生内存碎片. Python 在这里主要干的工作有:
1、如果请求分配的内存在1~256字节之间就使用自己的内存管理系统,否则直接使用 malloc.
2、这里还是会调用 malloc 分配内存,但每次会分配一块大小为256k的大块内存.


经由内存池登记的内存到最后还是会回收到内存池,并不会调用 C 的 free 释放掉.以便下次使用.对于简单的Python对象,例如数值、字符串,元组(tuple不允许被更改)采用的是复制的方式(深拷贝?),也就是说当将另一个变量B赋值给变量A时,虽然A和B的内存空间仍然相同,但当A的值发生变化时,会重新给A分配空间,A和B的地址变得不再相同

C 2条回复 评论
雾岛残月

会计想转行学计算机或者电子信息工程类 目前觉得计算机可能就业好一点 但是不知道从哪开始学最好?

发表于 2023-02-21 21:00:00
0 0
我吃小朋友

感觉文章思路挺清晰的~

发表于 2022-09-19 22:00:00
0 0