python的内存管理

作者: junson | 来源:发表于2016-07-09 16:05 被阅读210次

python内存管理

主要内容

  • 变量不需要声明
  • 变量不需要指定类型
  • 程序员不用关心内存管理
  • 变量名会被“回收”
  • del语句能够直接释放资源

动态类型

python语言中,对象的类型和内存占用都是运行时确定的,在创建赋值的时候,解释器会根据语法和右侧的操作数来决定新对象的类型。在创建对象后,一个该对象的应用会被赋值给左侧的变量。

内存分配

python解释器承担了内存管理的复杂任务

引用计数

#####引用计数加1
当对象被创建并赋值给变量时,对象的引用计数就被设置为1
当同一个对象被创建并将其赋值给另外其他变量时,则该引用计数再加1
(同理 作为参数传递给函数,方法或者类的实例,改对象的引用计数加1)
#####引用计数减1
当对象的引用被销毁时,引用计数会减小。比如函数运行结束时,所有的局部变量都被自动销毁,对象的引用计数也就随之减少

显示销毁对象

  del (对象名)
  del语句:
               del一个对象,会将在线的名称空间洪的对象删除,并且赋值给该对象的对象的引用计数减1

垃圾收集

不再使用的内存会被一种叫做垃圾收集的机制释放。解释器负责跟踪对象的引用计数,垃圾回收器负责释放内存。垃圾回收器是一块独立的代码,他用来寻找引用计数为0的对象,特殊的场景下会出现循环引用。
关于循环引用
 一个循环引用发生的条件:至少两个对象相互引用时,也就是所有引用都消失时,这些引用仍然存在。这说明只靠引用计数是不够的。
 python中的垃圾回收器包含两个部分:一个引用计数器和一个循环垃圾回收器。
 +当一个对象的引用计数为0时,解释器会暂停,释放这个对象和仅有这个对象可访问的其他对象
 +循环垃圾回收器负责哪些分配总量很大的,未能通过引用计数销毁的哪些对象

相关文章

  • python内存管理机制

    Python内存管理机制 Python内存管理机制主要包括以下三个方面: 引用计数机制 垃圾回收机制 内存池机制 ...

  • 深入理解Python内存管理与垃圾回收,再也不怕问了(一)

    面试官:听说你学Python?那你给我讲讲Python如何进行内存管理? 我:???内存管理不太清楚额。。。 面试...

  • 面试日记--python的内存管理

    面试中被问到python的内存管理,只是说是python有自己的内存管理机制,有自己的垃圾回收机制,却不能详细作答...

  • python内存释放

    Python内存释放 python话说会自己管理内存,实际上,对于占用很大内存的对象,并不会马上释放。举例,a=r...

  • 新手上路?八大秘术助你offer无数(Python初学者/码农必

    话不多说,干货: 1、Python是如何进行内存管理的? Python的内存管理主要有三种机制:引用计数机制、垃圾...

  • Python3学习 - 第二节

    为什么说Python采用的是基于值的内存管理模式? Python采用的是基于值的内存管理方式,如果为不同变量赋相同...

  • python(Class7)

    内存管理之循环引用 在Python3.x中,内存管理问题基本上不会出现,类似与OC中的ARC机制在Python2....

  • iOS ARC

    内存管理 引用计数:Objective-C Python 垃圾收集:C#,Java等 区别 内存管理的基本规则 自...

  • Python内存管理机制

    转载: Python内存管理机制 c/c++中:通过malloc和free进行内存的申请和释放 python/ja...

  • Python基础知识

    一、Python简介 Python 是一种解释型语言,在 Python 中,由于内存管理是由 Python ...

网友评论

    本文标题:python的内存管理

    本文链接:https://www.haomeiwen.com/subject/ehnrjttx.html