当前位置:首页 > 内存 > 正文

关于python内存管理下列说法错误

  • 内存
  • 2024-06-10 06:56:41
  • 425

一、Python是怎么进行内存管理的?

1.对象引用计数机制


Python使用内部引用来跟踪内存中的对象。


参考文献数量增加的情况:


1.对象被分配一个新名称。


2.将其放入容器(例如列表、元组或字典)中。


引用计数减少的情况:


1使用del语句删除secret命名对象清楚地。。


2.参考超出范围或已重新分配。


在大多数情况下,引用的数量比您想象的要多得多。对于不可变数据(例如数字和字符串),解释器在程序的不同部分之间共享内存以节省内存。


2.垃圾收集


1.当一个对象的引用计数为零时,它就是垃圾,回收机制会处理它。


2.当两个对象a和b相互引用时,del语句可以减少a和b的引用计数并删除用于引用底层对象的名称。但是,由于每个对象都包含对其他对象的应用程序,因此引用计数不会重置为零,并且该对象也不会被销毁。(从而导致内存泄漏)。为了解决这个问题,解释器定期执行循环检测器,查找不可访问对象的循环并将其删除。


3.内存池机制


Python提供了内存的垃圾回收机制,但是它不会将内存放在内存池中而不是返回给操作系统。


oc机制。为了加快Python的执行效率,Python引入了内存池机制来管理应用程序并释放小块内存。


中所有小于256字节的对象都使用pymalloc实现的分配器,而大对象则使用malloc系统。


3Python对象,例如整数、浮点数、List,都有自己独立的内存池,并且它们的内存池在对象之间共享。这意味着,如果分配并释放大量整数,则用于存储这些整数的内存不能再分配给浮点数。


关于Python是如何进行内存管理的,小编青藤在这里跟大家分享一下。如果你对Python编程非常感兴趣,希望这篇文章能够对你有所帮助。如果你想了解更多Python编程技巧和资料,可以点击本页其他文章进行学习。


以上是小编分享的关于Python如何进行内存管理的相关内容。想了解更多可以关注GlobalIvy分享更多干货


二、Python如何进行内存管理

Python如何管理内存?

答:三个方面中,一是对象引用计数机制,二是垃圾回收机制,三是内存回收机制。

1对象引用计数机制

Python在内部使用引用计数来跟踪内存中的对象。

增加参考号:

1为对象指定一个新名称

2)

参考号减少的情况:

1使用del语句显式销毁对象别名

2或者重新Task

count()函数可以获取当前对象的引用号

大多数情况下,引用号比你想象的要大得多。对于不可变数据(例如数字和字符串),解释器会在程序的不同部分之间划分内存以节省内存。

相关推荐:《Python视频教程》

2.垃圾收集

1当对象的引用号返回到零时,机制会处理它。

2当两个对象a和b相互引用时,del语句可以减少a和b的引用计数并销毁用于引用基础对象的名称。但是,由于每个对象都包含对其他对象的应用程序,因此引用计数不会重置为零,并且该对象也不会被销毁。(从而导致内存泄漏)。为了解决这个问题,解释器定期运行循环检测器,查找无法到达的对象循环并将其删除。

3内存回收机制

Python提供了内存的垃圾回收机制,但它将未使用的内存放置在内存池中,而不是返回给操作系统。

oc机制。为了加快Python的执行效率,Python引入了内存池机制来管理小块内存的申请和释放。

2Python中所有小于256字节的对象都使用pymalloc实现的分配器,而大对象则使用malloc系统。

3Python对象,如整数、浮点数、列表等,都有自己独立的私有内存池,并且它们的内存池在对象之间不共享。这意味着,如果你释放和释放大量整数,那么用于存储这些整数的内存就不能再分配给浮点数了。


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

Python的内存管理一般考虑以下三个方面:

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

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

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

1)对象引用计数机制

跟踪内存对象Python使用简单的引用计数技术。count(a)可以查看对象a的引用计数,但是比正常计数大1,因为调用函数的时候传入了a,会让a的引用计数增加1

2)垃圾收集机制

吃多了总会发胖,Python也是如此。随着Python中的对象越来越多,它们会占用越来越多的内存。但你不必太担心Python的大小,它会及时“减肥”,开始收集垃圾(垃圾收集),并从中删除无用的对象

。基本原理,当Python中一个对象的引用计数下降到0时,就意味着没有引用指向该对象,该对象就成为垃圾被回收

例如,一个新的对象An对象被赋值给一个引用,对象引用计数变为1。如果删除引用,对象引用计数达到0,则该对象可以被垃圾回收。

然而,减肥是昂贵且困难的。在垃圾收集期间,Python无法执行其他任务。频繁的垃圾回收会大大降低Python的工作效率。如果内存中的对象不多,则不需要一直启动垃圾回收。

因此,Python只有在特定条件下才会自动启动垃圾回收。运行Python时,会记录对象分配(objectAllocation)和对象释放(objectAllocation)的次数。当两者之间的差异超过某个阈值时,垃圾收集就会开始。

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

3)内存池机制

Python语言分为大内存和小内存:(大小内存最大为256KB)

1Malloc内存使用可定制

2.小内存使用内存池分配

Python中内存管理机制有两套实现,其中一套是针对小对象的,即当大小小于256KB时,使用pymalloc会申请到内存池中的内存空间;当大于256KB时,系统会直接执行malloc行为,提前进入内存空间。