当前位置:首页 » 编程语言 » python的内存机制

python的内存机制

发布时间: 2025-08-27 05:19:29

python怎么进行内存管理的

Python作为一种动态类型的语言,其对象和引用分离。这与曾经的面向过程语言有很大的区别。为了有效的释放内存,Python内置了垃圾回收的支持。Python采取了一种相对简单的垃圾回收机制,即引用计数,并因此需要解决孤立引用环的问题。Python与其它语言既有共通性,又有特别的地方。对该内存管理机制的理解,是提高Python性能的重要一步。

② BAT面试题28:Python是如何进行内存管理的

Python的内存管理,一般从以下三个方面来说:

1)对象的引用计数机制(四增五减)

2)垃圾回收机制(手动自动,分代回收)

3)内存池机制(大m小p)

1)对象的引用计数机制

要保持追踪内存中的对象,Python使用了引用计数这一简单的技术。sys.getrefcount(a)可以查看a对象的引用计数,但是比正常计数大1,因为调用函数的时候传入a,这会让a的引用计数+1

2)垃圾回收机制

吃太多,总会变胖,Python也是这样。当Python中的对象越来越多,它们将占据越来越大的内存。不过你不用太担心Python的体形,它会在适当的时候“减肥”,启动垃圾回收(garbage
collection),将没用的对象清除

从基本原理上,当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾了

比如某个新建对象,它被分配给某个引用,对象的引用计数变为1。如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收。

然而,减肥是个昂贵而费力的事情。垃圾回收时,Python不能进行其它的任务。频繁的垃圾回收将大大降低Python的工作效率。如果内存中的对象不多,就没有必要总启动垃圾回收。

所以,Python只会在特定条件下,自动启动垃圾回收。当Python运行时,会记录其中分配对象(object
allocation)和取消分配对象(object deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。

我们可以通过gc模块的get_threshold()方法,查看该阈值。

3)内存池机制

Python中有分为大内存和小内存:(256K为界限分大小内存)

1、大内存使用malloc进行分配

2、小内存使用内存池进行分配

python中的内存管理机制都有两套实现,一套是针对小对象,就是大小小于256K时,pymalloc会在内存池中申请内存空间;当大于256K时,则会直接执行系统的malloc的行为来申请内存空间。

热点内容
那怎么解压 发布:2025-08-28 10:38:09 浏览:965
安卓商店哪个游戏多 发布:2025-08-28 10:35:33 浏览:404
android开发代码 发布:2025-08-28 10:31:51 浏览:907
安卓低端手机如何增强性能 发布:2025-08-28 10:14:45 浏览:801
脚本实例检测ping存活 发布:2025-08-28 09:53:18 浏览:619
小米手机字体在哪个文件夹 发布:2025-08-28 09:49:23 浏览:857
linux日志目录 发布:2025-08-28 09:47:53 浏览:527
电脑显示无法与设备dns服务器通讯 发布:2025-08-28 09:46:40 浏览:341
sqlserver数组 发布:2025-08-28 09:46:39 浏览:914
xp系统搭建ftp 发布:2025-08-28 09:45:52 浏览:561