Python的内存管理一般看以下三个方面:
1)对象引用计数机制(四自增五自减)
2)垃圾收集机制(手动和自动),生成回收)
3)内存池机制(大m,小p)
1)对象引用计数机制
跟踪内存Python中的对象使用引用计数的简单技术。count(a)可以查看对象a的引用计数,但是比正常计数大1,因为调用函数时传入了a,会使a的引用计数增加1
2)垃圾收集机制
吃多了总会发胖,Python也是如此。随着Python中的对象越来越多,它们会占用越来越多的内存。但您不必太担心Python的大小。它会在适当的时候“减肥”,启动垃圾收集(garbagecollection)并清理掉无用的对象
。一个基本原理,当Python中某个对象的引用计数下降到0时,就表示没有引用指向该对象,该对象就成为垃圾被回收
例如,一个new对象被分配给引用时,该对象的引用计数变为1。如果删除该引用并且该对象的引用计数达到0,则该对象可能会被垃圾收集。
但是减肥是昂贵且劳动密集型的。在垃圾收集期间,Python无法执行其他任务。频繁的垃圾回收会大大降低Python的工作效率。如果内存中的对象不多,则不需要一直启动垃圾回收。
所以,Python只会在特定条件下自动启动垃圾回收。Python运行时,会记录对象分配(object
allocation)和对象释放(objectdeallocation)的次数。当两者之间的差值高于某个阈值时,垃圾收集就会开始。
我们可以通过gc模块的get_threshold()方法看到阈值。
3)内存池机制
Python分为大内存和小内存:(256K是大小内存的限制)
1内存使用malloc进行分配
2使用内存池分配小内存
Python中的内存管理机制有两套实现。一种是对于小对象来说,当大小小于256K时,pymalloc会在内存池中搜索内存空间,当大于256K时,会直接执行系统malloc行为来搜索内存空间。
上一篇:python如何进行内存管理
下一篇:python内存管理机制