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的变量,这个引用次数会是实时变化的。

  • 最后,给博客点个赞呗,笔者会持续更新,可以关注博主!
发布了35 篇原创文章 · 获赞 14 · 访问量 6859

猜你喜欢

转载自blog.csdn.net/caoyuan666/article/details/104680717