What garbage collection is
How garbage collection is implemented in Java
How to pass a hint to the JVM to run the garbage collector
How to implement the finalizers
Different states of an object based on its reachability and finalization status
The difference between strong and weak references
How to use weak references to implement memory-sensitive cache
How to use PhantomReference and ReferenceQueue classes to implement cleanup tasks for objects
How to use the new Cleaner class in JDK9 to perform cleanup work for phantom reachable objects
All example programs ...