package com.test.hessian; import java.lang.ref.WeakReference; import com.jarvis.cache.serializer.HessianSerializer; import com.jarvis.cache.serializer.WeakReferenceSerializerFactory; import com.test.Simple; public class WeakReferenceTest { private static final HessianSerializer serializer=new HessianSerializer(); static { serializer.addSerializerFactory(new WeakReferenceSerializerFactory()); } public static void main(String[] args) { Simple s=new Simple(); s.setName("tt"); s.setAge(10); s.setSex(1); WeakReference<Simple> ref=new WeakReference<Simple>(s); s=null; try { WeakReference<Simple> ref2=(WeakReference<Simple>)serializer.deepClone(ref, null); System.out.println(ref2.get()); } catch(Exception e1) { e1.printStackTrace(); } int i=0; while(ref.get() != null) { System.out.println(String.format("Get str from object of WeakReference: %s, count: %d", ref.get(), ++i)); if(i % 10 == 0) { System.gc(); System.out.println("System.gc() was invoked!"); } try { Thread.sleep(500); } catch(InterruptedException e) { } } System.out.println("object a was cleared by JVM!"); try { WeakReference<Simple> ref2=(WeakReference<Simple>)serializer.deepClone(ref, null); System.out.println(ref2.get()); } catch(Exception e1) { e1.printStackTrace(); } } }