Python全栈(4)—— 内存管理机制

对内存管理机制,c语言和Python的内存管理机制是不一样的!

c语言:

我们在写c语言时,可以通过指令直接访问内存,比如对单片机进行c语言编程时,可以将运行时的数据直接保存到内存中,如果底层单片机程序需要更新时,仅需要一个串口便可以对其程序进行更新。
但是,c语言不具有内存回收机制,如果c语言编写中需要控制内存,需要通过程序自行控制。

Python:

对于Python和Java这些语言,具有垃圾回收机制(GC),对于每一个变量,都会有引用次数统计,定期会对引用次数为0的变量进行清除处理。
下面通过几行代码详细介绍一下Python内存管理机制:
先定义一个列表x,每引用一次,引用次数加1

import sys
x=[]   #1
y=x    #2
z=x    #3
a=z    #传递同样会增加引用计数  4
print(sys.getrefcount(x))   #5

#5

下面是引用次数减少的情况,下面的程序是基于上面的程序,当被引用的变量重新被定义时,那么被引用变量的次数将减1:

# 减少引用计数方法
x=1    
y=2
print(sys.getrefcount(a))
print(sys.getrefcount(x))   # 按道理是2,但是,Python对于相同常量,只留取一份
print(sys.getrefcount(y))
print(z)


'''
3
2381
1174
[]
'''

这时候,会发现给变量x赋值1,但是x的引用次数为2381,这其实是因为Python未来节省内存,将所用数值为1的变量都记录在一起,在Python内部也会有许多值为1的变量,这个引用次数会是实时变化的。

  • 最后,给博客点个赞呗,笔者会持续更新,可以关注博主!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力改掉拖延症的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值