Python内存管理机制

本文探讨了Python内存管理机制,包括内存池、引用计数和垃圾回收。Python在1~256字节内存分配上使用内存池以提高效率,而大块内存则依赖于C的malloc。对象间的赋值可能导致深拷贝或浅拷贝。引用计数增加或减少的情况被详细阐述,当计数为0或存在循环引用时,垃圾回收器会回收内存。
摘要由CSDN通过智能技术生成

一、python内存

因为要调用while循环,循环内有temp变量,不清楚python是否会在每一轮循环结束后自动释放temp内存空间,做了一个内存测试,发现无论temp = none,还是del temp,只能销毁变量,无法完全释放内存空间。注:红色部分标出相同内存id。

>>> for i in range(3):
	temp = i
	print temp,id(temp)
0 36666732
1 36666720
2 36666708
>>> for i in range(4,7):
<span style="white-space:pre">	</span>temp = i
<span style="white-space:pre">	</span>print temp,id(temp)
<span style="white-space:pre">	</span>temp = None
4 36666684
5 36666672
6 36666660
>>> for i in range(7,10):
	temp = i
	print temp,id(temp)
	del temp
7 36666648
8 36666636
9 36666624
>>> a = 1
>>> id(a)
36666720

>>> b = 5
>>> id(b)
36666672
>>> c = 8
>>> id(c)
36666636
测试完毕后删除c可以看到,变量c和temp确实被销毁,只是他们指向的引用值仍然会在内存中存在。直至窗口关闭才自动释放,人工无法干预。
>>> del c

 
>>> id(c)

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    id(c)
NameError: name 'c' is not defined
>>> id(temp)

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    id(temp)
NameError: name 'temp' is not defined
>>> id(5)
36666672
>>> id(10)
36666612
>>> id(100000)
41708736
>>> id("1234")
46118528
>>> d = "1234"
>>> id(4)
36666684

二、内存池机制

查看了相关的博客,更深一步了解python内存机制

Python的内存机制以金字塔行,-1,-2层主要有操作系统进行操作,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值