Memory Allocation in Java

 In java all variables are stored in a stack. local variables are de-allocated in a LIFO (Last in first out) order as soon as the method terminates.
All dynamically allocated arrays and objects are stored in heap.  No need to deallocate these memory in any specific order. They can be garbage collected (removed from the memory) as soon as  their use is over.

Garbage Collection in Java
       An object that is not referred by any reference variable will be deallocated their memory by the garbage collector. SO those variables become garbaged.


 Garbage Collection is automatic.
A reference variable is declared within a function, then that reference is invalidated soon as the function call ends.