This article on Java memory management by Brian Goetz explains why Java memory management is so efficient. The key is ephemeral or generational garbage collection - a technology that made Lisp a practical and efficient language 20 years ago. I especially liked Brian's discusion on how there is often a zero cost of deallocation of short lived objects. Cool stuff!