So in a language like C, memory is separated into 5 different parts: OS Kernel, text segment, static memory, dynamic memory, and the stack. Something like this:
In java any time you use the word new
, memory for that object is allocated on the heap and a reference is returned. This is also true for arrays. The int[] a
is just the reference to new int[1]
. When you do new int[2]
, a new array is allocated and pointed to a. The old array will be garbage collected when needed.