Co je slabá reference?
Slabým odkazem je odkaz na objekt v paměti, který nezabrání objektu v vyčištění rutinami pro odvoz odpadu z důvodu jeho přidružení k objektu. Tento typ reference se běžně používá k eliminaci úniků paměti, pokud existují zvláštní podmínky, které zabraňují normálnímu odběru odpadu. Programovací algoritmy, které používají kruhový odkaz nebo uchovávají cizí informace v mezipaměti nebo speciální struktuře, mají prospěch z použití slabých odkazů. Využití slabých odkazů v těchto typech situací umožňuje vyčistit nepoužité referenční objekty a související slabé odkazy.
V počítačovém programování je silný odkaz obvykle vytvořen ve výchozím nastavení, když je objekt vytvořen, a paměť zabíraná objektem zůstává přidělena, dokud je silný odkaz životaschopný. Silný odkaz se zruší a paměť jeho přidruženého objektu se uvolní krátce po silném odkazu a jeho objekt je označen jako již nepoužívaný programem. V určitých situacích, jako jsou například programování soketů nebo manipulace s obrázky, třídy používané k vytváření pracovních objektů nemají vestavěnou kapacitu pro ukládání dalších informací, které jsou vyžadovány konkrétní aplikací. Další podrobnosti o přechodných objektech, jako jsou připojení nebo obrázky, musí být uloženy v doplňkových objektech mezipaměti a propojeny s přechodnými objekty odkazem. Je-li místo silného odkazu použit slabý odkaz, další informace nejsou vázány odkazem a mohou být odstraněny z mezipaměti sběratelem odpadků, jakmile je referenční objekt označen jako životaschopný.
Slabé referenční třídy jsou obvykle k dispozici v jazycích, které jsou rozšířeny o subsystémy sběru odpadu, včetně Java, Python, Perl, C # a .NET framework. V C ++ jsou však programátoři obvykle zodpovědní za zajištění vyčištění paměti. Tento jazyk implementoval inteligentní třídu ukazatelů, která poskytuje některé stejné funkce, jaké poskytují slabé odkazy a sběr odpadu, což pomáhá snižovat úniky paměti způsobené nesprávným vyčištěním ukazatele.
Aby se dále usnadnila správa paměti, mohou jazyky se zařízením na sběr odpadu dále vylepšovat funkčnost jazyka poskytováním jemnějších přechodů jiných než silných nebo slabých odkazů. Do těchto jazyků mohou být zahrnuty typy dat, jako jsou měkké reference a fantomové odkazy, což umožňuje různé úrovně opětovného zachycení objektu nebo oznámení o přemístění. Programátoři, kteří používají jazyky s automatickým sběrem odpadu, by se měli seznámit se všemi referenčními třídami, které jsou k dispozici, aby se zlepšil výkon aplikací.