As we have seen, objects live in the heap memory and heap memory is slower than stack. Every object on the heap has a lock, which ensures mutual exclusion upon invoke from a synchronized method or block. Heap and synchronization add performance overhead. Moreover, getting unused objects out of heap is very expensive from the performance point of view. On the other hand, stack memory is cheaper to clear as the JVM destroys the stack as soon as the method returns.
Also, JVM manages the stack memory properly and its deallocation is free, which speeds up the performance remarkably. I am sure you must be scratching your head and thinking, can we find a way to store an object in the stack memory than heap memory? If we could do ...