Why didn’t my app throw an OutOfMemoryError?
Every once in a while I run into someone that has a JVM that is running back to back collections and yet the heap is still almost full after each attempt! When they discover that their problem is related to the JVM not having enough memory they often ask the question, why didn't the JVM throw an OutOfMemoryError? After all my application is not making any forward progress and the reason is Java heap is almost completely exhausted.
First things first, if you're lucky, you may never realize that your JVM is running a ponzi scheme on you. It