--- old/src/share/classes/sun/java2d/Disposer.java 2014-02-04 23:35:37.000000000 -0800 +++ new/src/share/classes/sun/java2d/Disposer.java 2014-02-04 23:35:37.000000000 -0800 @@ -47,8 +47,9 @@ * @see DisposerRecord */ public class Disposer implements Runnable { - private static final ReferenceQueue queue = new ReferenceQueue(); - private static final Hashtable records = new Hashtable(); + private static final ReferenceQueue queue = new ReferenceQueue<>(); + private static final Hashtable, DisposerRecord> records = + new Hashtable<>(); private static Disposer disposerInstance; public static final int WEAK = 0; @@ -77,7 +78,7 @@ } disposerInstance = new Disposer(); java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { + new java.security.PrivilegedAction() { public Object run() { /* The thread must be a member of a thread group * which will not get GCed before VM exit. @@ -135,11 +136,11 @@ if (target instanceof DisposerTarget) { target = ((DisposerTarget)target).getDisposerReferent(); } - java.lang.ref.Reference ref; + java.lang.ref.Reference ref; if (refType == PHANTOM) { - ref = new PhantomReference(target, queue); + ref = new PhantomReference<>(target, queue); } else { - ref = new WeakReference(target, queue); + ref = new WeakReference<>(target, queue); } records.put(ref, rec); } @@ -149,7 +150,7 @@ try { Object obj = queue.remove(); ((Reference)obj).clear(); - DisposerRecord rec = (DisposerRecord)records.remove(obj); + DisposerRecord rec = records.remove(obj); rec.dispose(); obj = null; rec = null; @@ -214,7 +215,7 @@ && freed < 10000 && deferred < 100) { freed++; ((Reference)obj).clear(); - DisposerRecord rec = (DisposerRecord)records.remove(obj); + DisposerRecord rec = records.remove(obj); if (rec instanceof PollDisposable) { rec.dispose(); obj = null; @@ -247,17 +248,18 @@ * so will clutter the records hashmap and no one will be cleaning up * the reference queue. */ - public static void addReference(Reference ref, DisposerRecord rec) { + @SuppressWarnings("unchecked") + public static void addReference(Reference ref, DisposerRecord rec) { records.put(ref, rec); } public static void addObjectRecord(Object obj, DisposerRecord rec) { - records.put(new WeakReference(obj, queue) , rec); + records.put(new WeakReference<>(obj, queue) , rec); } /* This is intended for use in conjunction with addReference(..) */ - public static ReferenceQueue getQueue() { + public static ReferenceQueue getQueue() { return queue; }