image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.pngimage.png

    凡是局部变量都在栈内存中,如定义在方法中的变量,方法参数上的变量,for循环中的变量,会自动释放内存。
    凡是new出来的实体都在堆里面存放,实体包括数组和对象,堆内存中的每一个实体在内存中都有一个进制地址来做存放位置,后续的赋值给的也是地址不是内容本身,变量就指向那个地址存储的数组值,或者说变量引用了这个数组,这也是数组为啥叫引用数据类型。
    数组一被定义,里面的元素都有默认初始化值,根据数组类型定,int为0,double为0.0,float为0.0f,布尔类型为false。也就是说堆内存中的元素也是如此,都有默认初始化值。
    常量null只有引用数据类型才能使用。当一个实体在堆内存中没有任何引用使用它的话,那么它就被JVM识别为垃圾,然后在不定时中JVM会启动垃圾回收机制,将数组实体在内存中清除。

    java建立在C++上,java有自己的垃圾回收机制,但是C++中需要手动去清除内存中无用的数据。