Python的垃圾回收机制(二)之内存模型

本文深入探讨Python的内存模型,包括定长对象如Int、None的内存布局,变长对象如List、Tuple、String的内存结构。重点阐述了对象的引用计数、PyTypeObject在对象行为中的作用,以及内存管理策略,为理解Python垃圾回收机制奠定基础。
摘要由CSDN通过智能技术生成

0. 背景

之前介绍了Python垃圾回收的简介,它简要介绍了三种垃圾回收器:引用计数回收器,标记清除回收器和世代回收器,这里会给出Python中基础类型在C语言中的内存模型,以帮助我们理解下一节三种垃圾回收器结合使用流程。

1. Python对象内存模型

首先介绍一下Python对象的内存模型,如下图1所示:

这里写图片描述
图1. PyObject对象内存模型

上图可以看到,一个PyObject必须包含ob_refcntob_typeob_refcnt是这个对象的引用计数,而ob_type则是指向_typeobject结构体的指针,它是Python内部的一种特殊对象,它是用来制定一个对象类型的类型对象,所以上图中它指向了一个PyTypeObject

在PyTypeObject中定义了大量的函数指针,这些函数指针最终都会指向某个函数,或者指向NULL。这些函数指针可以视为类型对象中所定义的操作,而这些操作直接决定着一个对象在运行时所表现出的行为。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值