垃圾回收:引用计数与分代收集机制
當引?計數為0時,該對象?命就結束了。
引?計數機制的優點:
1、簡單
2、實時性:?旦沒有引?,內存就直接釋放了。不?像其他機制等到特定時機。實時性還帶來?個好處:處理回收內存的時間分攤到了平時。
引?計數機制的缺點:
1、維護引?計數
2、消耗資源循環引?
list1??? =???[]
list2??? =???[]
list1.append(list2)
list2.append(list1)
list1與list2相互引?,如果不存在其他對象對他們的引用,list1與list2的引用計數也仍然1,所占?的內存永遠無法被回收,這將是致命的。??? 對于如今的強?硬件,缺點1尚可接受,但是循環引?導致內存泄露,注定python還將引?新的回收機制。(分代收集)
?.垃圾回收機制
Python中的垃圾回收是以引用計數為主,分代收集為輔。
1、導致引用計數+1的情況
對象被創建,例如a=23??????
?對象被引?,例如b=a???
對象被作為參數,傳?到?個函數中,例如func(a)???????
對象作為?個元素,存儲在容器中,例如list1=[a,a]???
2、導致引用計數-1的情況
對象的別名被顯式銷毀,例如del??? a??????
?對象的別名被賦予新的對象,例如a=24???
?個對象離開它的作?域,例如f函數執?完畢時,func函數中的局部變量(全局變量不會)???
對象所在的容器被銷毀,或從容器中刪除對象???
3、查看一個對象的引用計數
import??? sys
a??? =??? "hello??? world"
?sys.getrefcount(a)
可以查看a對象的引用計數,但是?正常計數?1,因為調?函數的時候傳入a,這會讓a的引用計數+1
?
4.有三種情況會觸發垃圾回收:
總結
以上是生活随笔為你收集整理的垃圾回收:引用计数与分代收集机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序中实现瀑布流布局和无限加载
- 下一篇: 微信小程序最常用的布局——Flex布局