====== Weak Referencies ====== class TestA { private Object link; public Object getLink(){ return link; } public void setLinkAndPrint(Object newlink){ link = newlink; print(); } public void print(){ Runtime r = Runtime.getRuntime(); r.gc(); System.out.println(getClass().getName() + ": link =" + getLink()); } } class TestB { private WeakReference link; public Object getLink(){ return link.get(); } public void setLinkAndPrint(Object newlink){ link = new WeakReference<>( newlink ); print(); } public void print(){ Runtime r = Runtime.getRuntime(); r.gc(); System.out.println(getClass().getName() + ": link =" + getLink()); } } public class TestWeakRef { public static void main(String[] args) { TestA a = new TestA(); a.setLinkAndPrint(Arrays.asList(4,5,6)); a.print(); TestB b = new TestB(); b.setLinkAndPrint(Arrays.asList(1,2,3)); b.print(); } } Result: promauto.batchext.TestA: link =[4, 5, 6] promauto.batchext.TestA: link =[4, 5, 6] promauto.batchext.TestB: link =[1, 2, 3] promauto.batchext.TestB: link =null