Co je měkká reference?
V kódovacím jazyce Java® jsou neustále vytvářeny odkazy na objekty, řetězce a proměnné, i když programátor o těchto referencích nevědí. Tyto odkazy komunikují přímo s sběratelem odpadu, což je funkce, která shromažďuje nepotřebné informace a odhodí je, aby již nezabírala paměť. Ve výchozím nastavení jsou všechny odkazy silné odkazy a jsou nastaveny bez kódování, což znamená, že nejsou uvolněny do sběratele odpadu. Měkký odkaz umožňuje, aby byla data zahozena. Je to referenční hodnota na střední úrovni pro všechny odkazy bez silné stránky.
Pokaždé, když programátor s Java® udělá cokoli, ať už je to tak jednoduché jako vytváření řetězce nebo vytváření složitých funkcí, provede se odkaz. Programátor nemusí psát referenční příkaz; odkaz je vytvořen automaticky a ve výchozím nastavení je silným odkazem. To znamená, že data z odkazu nelze vyhodit, protože jsou spojena s integrálními objekty potřebnými pro celý skript.
Některá data je však třeba zahodit, protože jinak zabírají spoustu paměti. Například, pokud programátor vytvoří skript, ve kterém se používají sériová čísla nebo se shromažďují nebo vytvářejí jiné dočasné informace, bude držení těchto informací škodlivé. Program Java® by odmítl zahodit informace, i když je to nepotřebné, a skript potřebuje k fungování více a více paměti.
Tím, že určíte řetězec nebo sekci jako měkký odkaz, který musí být umístěn v kódování, to sdělí sběrateli odpadu, že data mohou být uvolněna. Po uvolnění bude řetězec nebo sekce čten jako „null“. Sběratel odpadků v závislosti na jeho nastavení rozhodne, kdy mají být data vyhozena.
Existují tři ne silné odkazy: měkká reference, slabá reference a fantomová reference. Slabá reference je nejslabší a její data jsou rychle zahozena. Měkké odkazy, které jsou nejlepší pro skripty, kde lze dočasná data použít několikrát, jsou další v řadě. Fantomový odkaz je zahozen téměř automaticky během jedné sekundy a měl by být používán střídmě.
Doba, po kterou měkká reference zůstává, obvykle závisí na množství paměti v počítači. Pokud je paměť plná, sběrač odpadků nejprve zničí všechny slabé odkazy. Když jsou všechny slabé reference pryč a pokud paměť stále potřebuje vyčistit data, budou další měkké odkazy vyhozeny.