Python内存管理说明

来源:互联网 发布:淘宝卖家怎样包运费险 编辑:程序博客网 时间:2024/06/06 03:54
#coding=utf8'''变量和内存管理细节:1、变量无须事先声明2、变量无须指定类型3、程序员不用关心内存管理4、变量名会被"回收"5、del语句能够直接释放资源'''from audioop import add'''Python中无需显示声明变量,变量在第一次被赋值时自动声明。变量只有被创建和赋值后才能被使用。'''#print var #变量var没有定义var=45#变量一旦被赋值,就可以通过变量名来访问它print var'''Python中不但变量名无需实现声明。对象的类型和内存占用都是运行时确定的。Python解释承担了内存管理的复杂任务。''''''Python使用引用计数来保持追踪内存中的对象。Python内部记录着所有使用中的对象有多少引用。一个内部跟踪变量,称为一个引用计数器。每个对象拥有引用的个数,称为引用计数。当对象被创建时,就创建了一个引用计数,当对象不在需要时,引用计数为0,就会被垃圾回收。''''''当对象被创建并赋值给变量时,该对象的引用计数就被设置为1。当同一个对象的引用又被赋值给其它变量时,或作为参数传递给函数、方法或实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用,或者称作别名,就被创建(则该对象的引用计数自动加1)。'''Float=3.14      #创建一个浮点对象并将其引用赋值Some=Float    #创建一个指向同一对象的别名Some。Float对象的引用计数加1。add(Float,Float)       #作为参数传递给函数(新的本地引用),引用计数加1。List=[123,Float] #称为容器对象的一个元素,引用计数加1。'''当对象的引用被销毁时,引用计数会减小。当引用离开其作用范围时,所有的局部变量都被自动销毁,对象的引用计数页随之减少。'''def add(x,y): #局部变量x,y,当离开函数时,x,y被自动销毁    return x+y'''当变量被赋值给另外一个对象时,原对象的引用计数会自动减1。'''foo='xyz' #创建一个字符串对象并将其引用赋值bar=foo  #创建一个指向同一对象的别名bar。引用计数加1。foo=123  #把整数对象赋值给变量,字符串引用计数减1。'''使用del删除一个变量,也会造成对象引用计数减少;当一个对象被移出一个窗口对象时,也会造成对象引用计数减少;'''del   Some #对象的别名被显示销毁List.remove(Float) #对象被从一个窗口中移除del List #窗口对象本身被销毁'''del语句会删除对象的一个引用,语法格式如下:del obj1[,obj2[,... objN]]执行一个del语句会产生两个结果:从现在的命名空间中删除obj、对象的引用计数减1''''''执行del语句会删除对象的最后一个引用,也就是对象的引用计数减为0,这会导致该对象从此“无法访问”或“无法抵达”。该对象就成为垃圾回收机制的回收对象。任何追踪或调试程序会给一个对象增加一个额外的引用,这会推迟该对象被回收的时间。''''''不再被使用的内存会被一种称为垃圾收集的机制释放。垃圾收集器是一块独立的代码,它用来寻址引用计数为0的对象。它也负责检查虽然引用计数大于0但也应该被销毁的对象。''''''Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。用来防止循环引用的产生。'''

0 0
原创粉丝点击