http://java.sun.com/developer/technicalArticles/javase/finalization/ Pitfall and solution of implementing finalize(), if you really need it http://www.hpl.hp.com/personal/Hans_Boehm/misc_slides/java_finalizers.pdf Optimization-robust finalization - http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2261.html An example showing that memory leak caused by finalize() - http://vanillajava.blogspot.com.au/2012/12/object-resurrection.html Beware the Finalizer queue, and java.lang.ref.Finalizer object - https://plumbr.eu/blog/debugging-to-understand-finalizer try { return } finally {} - https://www.pixelstech.net/article/1474892842-try-%7B-return-%7D-finally-%7B%7D