一、 栈和堆的特点
1、栈内存的特点
栈内存存储的都是局部变量,变量一旦出了自己的作用域,这样才会释放内存空间。
2、堆内存特点
堆内存存储的是对象数据(引用类型数据,除8种基本类型以外的),对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时候该对象才会消失,释放内存。
注:① 对象如果没有变量引用了,那么该对象就是一个垃圾对象。
② 凡是以new关键字创建的对象,jvm都会在堆内存开辟新的空间用于创建新的对象。
二、 应用实例
1、int[] grade = new int[3];
的内存结构解释
2、int[] grade1 = new int[2]; int[] grade2 = new int[2];
的内存结构解释
3、int[] grade1 = new int[2]; int[] grade2 = grade1;
的内存结构解释(同一个数组对象)
4、int[] grade = new int[2]; grade = null ;
的内存结构解释
5、int[][] grade = new int[3][4];
的内存结构解释
6、int[] grade = new int[3]; grade = int[4];
的内存结构解释
7、Person p = new Person(); p.name = "张三"; p.age = 18
的内存结构解释
8、Person p1 = new Person(); Person p2 = new Person(); p1.name = "张三"; p2.name = "李四"; p1 = p2;
的内存结构解释
9、static String country = "中国";
的内存解释
10、静态函数的内存解释