This is a case where we really should be using the [ReferenceQueue](http://docs.oracle.com/javase/7/docs/api/java/lang/ref/ReferenceQueue.html)  cleanup mechanism.