溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

weakreference如何回收

發(fā)布時(shí)間:2021-09-22 11:57:56 來源:億速云 閱讀:148 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)weakreference如何回收,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

  在計(jì)算機(jī)程序設(shè)計(jì)中,weakreference弱引用與強(qiáng)引用相對(duì),是指不能確保其引用的對(duì)象不會(huì)被垃圾回收器回收的引用。一個(gè)對(duì)象若只被弱引用所引用,則被認(rèn)為是不可訪問(或弱可訪問)的,并因此可能在任何時(shí)刻被回收。一些配有垃圾回收機(jī)制的語言,如Java、C#、Python、Perl、Lisp等都在不同程度上支持弱引用。

  weakreference垃圾回收

  垃圾回收用來清理不會(huì)再使用的對(duì)象,從而降低內(nèi)存泄露和數(shù)據(jù)損壞的可能性。垃圾回收主要有兩種類型:追蹤和引用計(jì)數(shù)。引用計(jì)數(shù)會(huì)記錄給定對(duì)象的引用個(gè)數(shù),并在引用個(gè)數(shù)為零時(shí)收集該對(duì)象。由于一次僅能有一個(gè)對(duì)象被回收,引用計(jì)數(shù)無法回收循環(huán)引用的對(duì)象。一組相互引用的對(duì)象若沒有被其它對(duì)象直接引用,并且不可訪問,則會(huì)永久存活下來。一個(gè)應(yīng)用程序如果持續(xù)地產(chǎn)生這種不可訪問的對(duì)象群組,就會(huì)發(fā)生內(nèi)存泄漏。在對(duì)象群組內(nèi)部使用弱引用(即不會(huì)在引用計(jì)數(shù)中被計(jì)數(shù)的引用)有時(shí)能避免出現(xiàn)引用環(huán),因此弱引用可用于解決循環(huán)引用的問題。如Apple的Cocoa框架就推薦使用這種方法,具體為,在父對(duì)子引用時(shí)使用強(qiáng)引用,子對(duì)父引用時(shí)使用弱引用,從而避免了循環(huán)引用。

  程序?qū)σ恍?duì)象只進(jìn)行弱引用,通過此法可以指明哪些對(duì)象是不重要的,因此弱引用也用于盡量減少內(nèi)存中不必要的對(duì)象存在的數(shù)量。

  weakreference變種

  有些語言包含多種強(qiáng)度的弱引用。例如Java,定義了軟引用、弱引用和虛引用,引用強(qiáng)度依次遞減。每種引用都有相對(duì)應(yīng)的概念。垃圾回收器(GC)通過判斷對(duì)象的可訪問性類型來確定何時(shí)回收該對(duì)象。當(dāng)一個(gè)對(duì)象是軟可訪問的,垃圾回收器就可以安全回收這個(gè)對(duì)象,但如果垃圾回收器認(rèn)為JVM還能空出可用內(nèi)存(比如JVM還有大量未使用的堆空間),則有可能不會(huì)立刻回收軟可訪問的對(duì)象。但對(duì)于弱可訪問的對(duì)象,一旦被垃圾回收器注意到,就會(huì)被回收。和其他引用種類不同,虛引用無法跟蹤。但另一方面,虛引用提供了一種機(jī)制,當(dāng)一個(gè)對(duì)象被回收時(shí)程序可以得到通知。一些未配有垃圾回收機(jī)制的語言,比如C++,也提供強(qiáng)/弱引用的功能,以作為對(duì)垃圾回收庫的支持。在C++中,普通指針可看做弱引用,智能指針可看做強(qiáng)引用,盡管指針不能算"真正"的弱引用,因?yàn)槿跻脩?yīng)該能知道何時(shí)對(duì)象變成不可訪問的了。

關(guān)于“weakreference如何回收”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI