python的垃圾回收机制和内存泄漏场景

python和java一样,都是面向对象的语言。高级语言比如java、C#等都采用了垃圾回收机制自动管理内存使用,C、C++等语言需要用户自己分配、释放内存。自己管理内存的优点是灵活、可以任意申请内存,但是缺点就是可能会造成内存泄漏。

python的存储机制

  1. python是面向对象原因,python的存储问题就是对象的存储问题。对于每个对象, python会分配一块内存空间去存储;
  2. 对于整数和短小的字符串,python会执行缓存机制,赋值给其他对象,只是新增该对象的引用;
  3. 容器对象,比如列表、元组、字典等类型,仅仅是其他对象的地址引用。

python内存管理机制

python解释器内核采用内存池方式管理物理内存,创建新对象时,解释器在预先申请的物理内存块上分配响应的空间给的对象使用,可以避免频繁的分配和释放物理内存。

python作为一种解释型语言,在赋值时解释器会根据语法和右侧的操作数来决定新对象的类型。在对象创建后,该对象的应用会被赋值给左边的变量。

a = 1 
b = a 
# 此时,ab指向同一对象的地址
id(a) = id(b)=94147440556736
a = 3
#id(a)产生变化,id(b)仍然指向原来的内存空间

python引用计数

python通过引用计数判断变量是否进行垃圾回收。当变量的引用计数为0时,该变量可进行回收。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值