Java基础学习之图解new代码在计算机中的内存结构

一、 栈和堆的特点

1、栈内存的特点
栈内存存储的都是局部变量,变量一旦出了自己的作用域,这样才会释放内存空间。

2、堆内存特点
堆内存存储的是对象数据(引用类型数据,除8种基本类型以外的),对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时候该对象才会消失,释放内存。
注:① 对象如果没有变量引用了,那么该对象就是一个垃圾对象。
② 凡是以new关键字创建的对象,jvm都会在堆内存开辟新的空间用于创建新的对象。

二、 应用实例

1、int[] grade = new int[3];的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

2、int[] grade1 = new int[2]; int[] grade2 = new int[2];的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

3、int[] grade1 = new int[2]; int[] grade2 = grade1;的内存结构解释(同一个数组对象)
Java基础学习之图解new代码在计算机中的内存结构

4、int[] grade = new int[2]; grade = null ;的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

5、int[][] grade = new int[3][4];的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

6、int[] grade = new int[3]; grade = int[4];的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

7、Person p = new Person(); p.name = "张三"; p.age = 18的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

8、Person p1 = new Person(); Person p2 = new Person(); p1.name = "张三"; p2.name = "李四"; p1 = p2;的内存结构解释
Java基础学习之图解new代码在计算机中的内存结构

9、static String country = "中国";的内存解释
Java基础学习之图解new代码在计算机中的内存结构

10、静态函数的内存解释
Java基础学习之图解new代码在计算机中的内存结构