Skip to main content

Ano ang isang mahina na sanggunian?

Ang isang mahina na sanggunian ay isang sanggunian sa isang bagay sa memorya na hindi pumipigil sa isang bagay na malinis sa pamamagitan ng mga gawain sa koleksyon ng basura dahil sa pakikipag -ugnay nito sa bagay.Ang ganitong uri ng sanggunian ay karaniwang ginagamit upang makatulong na maalis ang mga pagtagas ng memorya kapag umiiral ang mga espesyal na kondisyon na pumipigil sa normal na koleksyon ng basura.Programming algorithm na gumagamit ng isang pabilog na sanggunian o humawak ng ekstra na impormasyon sa isang cache o espesyal na istraktura na benepisyo sa pamamagitan ng paggamit ng mga mahina na sanggunian.Ang paggamit ng mga mahina na sanggunian sa mga ganitong uri ng mga sitwasyon ay nagbibigay -daan para sa paglilinis ng mga hindi nagamit na mga bagay na sanggunian at ang kanilang nauugnay na mahina na sanggunian.Ang bagay ay nananatiling inilalaan hangga't ang malakas na sanggunian ay nananatiling mabubuhay.Ang isang malakas na sanggunian ay nagiging nullified at ang mga nauugnay na memorya ng mga bagay ay napalaya sa ilang sandali matapos ang isang malakas na sanggunian at ang bagay nito ay na -flag dahil hindi na ginagamit ng isang programa.Sa ilang mga sitwasyon, tulad ng socket programming o mga aplikasyon ng pagmamanipula ng imahe, ang mga klase na ginamit upang lumikha ng mga gumaganang bagay ay walang built-in na kapasidad upang mag-imbak ng karagdagang impormasyon na kinakailangan ng isang tiyak na aplikasyon.Ang mga karagdagang detalye para sa mga lumilipas na bagay tulad ng mga koneksyon o larawan ay kailangang maiimbak sa mga suplemento na cache na bagay at naka -link sa mga lumilipas na bagay sa pamamagitan ng mga sanggunian.Kapag ang isang mahina na sanggunian ay ginagamit sa halip na malakas na sanggunian, ang labis na impormasyon ay hindi nakasalalay sa sanggunian at maaaring alisin mula sa cache ng kolektor ng basura kapag ang bagay na referent ay minarkahan bilang hindi mabubuhay.

mahina ang mga klase ng sanggunian ay karaniwangMagagamit sa mga wika na pinalaki ng mga subsystem ng koleksyon ng basura, kabilang ang Java, Python, Perl, C#, at ang .NET Framework.Sa C ++, gayunpaman, ang mga programmer ay karaniwang may pananagutan sa pagtiyak ng paglilinis ng memorya.Ang wikang ito ay nagpatupad ng isang matalinong klase ng pointer na nagbibigay ng ilan sa mga parehong pag -andar na ibinibigay ng mahina na sanggunian at koleksyon ng basura, na tumutulong upang mabawasan ang mga pagtagas ng memorya na dulot ng hindi wastong paglilinis ng pointer.Pagandahin ang pag -andar ng isang wika sa pamamagitan ng pagbibigay ng mas pinong gradients ng mga sanggunian maliban sa malakas o mahina na sanggunian.Ang mga uri ng data tulad ng mga malambot na sanggunian at mga sanggunian ng phantom ay maaaring isama sa mga wikang ito, na nagbibigay -daan para sa iba't ibang mga antas ng muling pag -abiso sa object o pag -abiso sa deallocation.Ang mga programmer na gumagamit ng mga wika na may awtomatikong koleksyon ng basura ay dapat maging pamilyar sa lahat ng mga klase ng sanggunian na magagamit upang mapagbuti ang pagganap ng aplikasyon.