And there is also another monkey wrench in the works. With Java 6/7, the compiler can do "escape analysis". And depending whether an instance can escape a method, the optimizer may decide to place certain instances on the stack too.