Imagine you have a stack, implemented on an array. You can push objects onto the stack by saying
Then you pop things off the stack like this
Then you forget all about the f reference. But you have forgotten that it is still on that array. If you don't push anything else onto the stack, that f reference will stay there for ever. You have no methods allowing access to it, but the JVM still sees it as "reachable." If you find a copy of
Joshua Bloch's Effective Java look on page 24 (2nd edition; don't know page for 1st edition) and it gives a much better explanation of the same problem.