一、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层主要有操作系统进行操作,