Kas yra silpna nuoroda?

Silpna nuoroda yra nuoroda į objektą atmintyje, kuri netrukdo objektui išvalyti šiukšlių surinkimo tvarka dėl jo susiejimo su objektu. Šio tipo nuoroda dažniausiai naudojama siekiant padėti pašalinti atminties nutekėjimą, kai yra specialių sąlygų, neleidžiančių įprastam šiukšlių rinkimui. Programavimo algoritmai, kurie naudoja žiedinę nuorodą arba talpykloje arba specialioje struktūroje laiko pašalinę informaciją, yra naudingi naudojant silpnas nuorodas. Silpnų nuorodų panaudojimas tokio tipo situacijose leidžia išvalyti nepanaudotus nuorodos objektus ir su jais susijusias silpnas nuorodas.

Kompiuterių programavimo metu stipri nuoroda paprastai sukuriama pagal numatytuosius nustatymus, kai sukuriamas objektas, o objekto užimta atmintis lieka skirta tol, kol stipri nuoroda išlieka gyvybinga. Stipri nuoroda panaikinama, o su ja susijusio objekto atmintis išlaisvinama netrukus po to, kai stipri nuoroda, o jos objektas pažymimas kaip programa nebenaudojamas. Tam tikrose situacijose, pavyzdžiui, naudojant lizdų programavimo ar vaizdo manipuliavimo programas, darbo objektams kurti naudojamos klasės neturi įmontuotos talpos papildomai informacijai, kurios reikia konkrečiai programai, saugoti. Papildoma informacija apie trumpalaikius objektus, pvz., ryšius ar paveikslėlius, turi būti saugoma papildomose talpyklos objektuose ir susieta su trumpalaikiais objektais nuorodomis. Kai naudojama silpna nuoroda, o ne stipri nuoroda, papildoma informacija nėra susieta su nuoroda ir šiukšlių rinkėjas gali ją pašalinti iš talpyklos, kai nuoroda objektas bus pažymėtas kaip negyvybingas.

Silpnos nuorodų klasės paprastai pasiekiamos kalbomis, kurias papildo šiukšlių surinkimo posistemiai, įskaitant Java, Python, Perl, C# ir .NET sistemą. Tačiau C++ programuotojai paprastai yra atsakingi už atminties išvalymą. Ši kalba įdiegė išmaniųjų rodyklės klasę, kuri teikia kai kurias tas pačias funkcijas, kurias teikia silpnos nuorodos ir šiukšlių rinkimas, ir padeda sumažinti atminties nutekėjimą, kurį sukelia netinkamas žymeklio išvalymas.

Siekiant dar labiau palengvinti atminties valdymą, kalbos su šiukšlių surinkimo įrenginiais gali papildomai pagerinti kalbos funkcionalumą suteikdamos smulkesnius nuorodų gradientus, išskyrus stiprią ar silpną nuorodą. Duomenų tipai, pvz., minkštosios nuorodos ir fantominės nuorodos, gali būti įtrauktos į šias kalbas, o tai leidžia įvairaus lygio pranešimų apie objektų perėmimą arba atšaukimą. Programuotojai, naudojantys automatinio šiukšlių surinkimo kalbas, turėtų susipažinti su visomis prieinamomis nuorodų klasėmis, kad pagerintų programos našumą.