Это старая версия документа.
Weak Referencies
class TheStrong { public Object link; public Object getLink(){ return link; } public void print(Object newlink){ link = newlink; System.out.println("TheStrong: my link =" + getLink()); } } class TheWeak { public WeakReference<Object> link; public Object getLink(){ return link.get(); } public void print(Object newlink){ link = new WeakReference<>( newlink ); System.out.println("TheWeak: my link =" + getLink()); } } public class Test { public static void main(String[] args) throws IOException { TheStrong thestrong = new TheStrong(); thestrong.print(Arrays.asList(4,5,6)); TheWeak theweak = new TheWeak(); theweak.print(Arrays.asList(1,2,3)); Runtime r = Runtime.getRuntime(); r.gc(); System.out.println("TheWeak: its link=" + theweak.getLink()); System.out.println("TheStrong: its link=" + thestrong.getLink()); } }
Result:
TheWeak: my link =[1, 2, 3] TheStrong: my link =[4, 5, 6] TheWeak: its link=null TheStrong: its link=[4, 5, 6]