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. Garbage Collection in Java
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.
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.