Java数组在内存中的存储

1.看待数组时,要把数组看成两部分:一部分是数组引用,即在代码中定义的数组引用变量;另一部分是实际的数组对象,这部分是在堆内存里运行的,通常无法直接访问,只能通过数组引用变量来访问。

2.定义并初始化一个数组之后,在内存中分配了两个空间,一个用于存放数组的引用变量,另一个用于存放引用变量所指向的数组本身。

例如:

         Java数组在内存中的存储_第1张图片

栈内存中存储所定义并初始化的引用变量arr,堆内存中存储arr指向的4个数组arr[0],arr[1],arr[2],arr[3]

3.如果堆内存中数组不再有任何引用变量指向自己,则这个数组将变成垃圾,会被系统的自动回收机制回收。为了让垃圾回收机制回收一个数组所占用的内存空间,可以将该数组变量赋值为null

附:栈内存:

     所有方法中定义的局部变量都是放在栈内存中的,随着方法的结束,这个方法的内存栈也将自然销毁

       堆内存:

      在程序中创建一个对象时,这个对象会被保存在一运行时的数据区里,以便反复利用,此数据区即为堆内存。

      每一个实体都有内存地址值,此内存地址存储在栈内存里。

你可能感兴趣的:(Java)