掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
過程

1、垃圾收集的第一步是通過可收集對象鏈表,將引用從引用中摘除。
有些container對象的PyGC_Head.gc.gc_ref還不是0。
2、對象的外部引用存在,這些對象是開始標(biāo)記的root object集合。
實例
首先我們說一下變量的概念: 1 變量名: 不存值,只是指向一個內(nèi)存地址 2 賦值符號 3 變量值: 這里才是存放數(shù)據(jù)的地方 變量我們是存在內(nèi)存當(dāng)中的,變量名存放的地方棧, 變量值放的地方是堆 我們只能操控堆,也就是變量值,不能操控變量名存放的地方 比如: x = 1 x = 2 x最終等于了2 , 因為x指向的內(nèi)存地址改變了 我們都是通過變量名去訪問值,它會有一個標(biāo)記的過程,存在于棧區(qū)的對象叫做GC Roots對象 它會掃描棧區(qū)(變量名)里所有的內(nèi)容,將所有棧區(qū)里的對象直接或間接訪問的對象標(biāo)記為存活對象,其余的都為非存活,應(yīng)該被清除 比如: l1 = [1] l2 = [2] l1.append(l2) l2.append(l1) del l1 del l2 什么是GC Roots可達的對象? 通過棧區(qū)(變量名)可到達(訪問)的對象,就叫GC Roots可達的對象, l1 就是一個GC Roots,del把l1與指向的內(nèi)存地址給解除了綁定,l1就沒有引用計數(shù)了
以上就是python標(biāo)記清除的過程,希望對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流