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

Iolanthe ·
更新时间:2024-11-13
· 706 次阅读

对内存管理机制,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的变量,这个引用次数会是实时变化的。

最后,给博客点个赞呗,笔者会持续更新,可以关注博主!
作者:努力改掉拖延症的小白



Python python全栈 内存管理

需要 登录 后方可回复, 如果你还没有账号请 注册新账号