同一块堆内存空间,可以被同时被不同的栈内存所指向,不同的栈可以修改同一块堆内存的内容。
1.
public class Yinyongchuandi {
public static void main(String[] args) {
Person per1 = new Person();
per1.name = "张三";
per1.age = 20;
Person per2 = per1;
per2.name = "李四";
System.out.println(per1.name);
}
}
class Person{
String name;
int age;
}
返回结果:李四
2.垃圾的产生
public class Yinyongchuandi {
public static void main(String[] args) {
Person per1 = new Person();
Person per2 = new Person();
per1.name = "张三";
per1.age = 20;
per2.name = "李四";
per2.age = 30;
per2 = per1;
per2.name = "王五";
System.out.println(per1.name);
}
}
class Person{
String name;
int age;
}
返回结果:王五
此时栈内存中的per1和per2都指向堆内存 name="王五" age=“20”,而name="李四" age="30" 没有被任何引用指向,成为了 垃圾:程序开发中没有任何对象指向的一块堆内存空间。所有的垃圾将等待GC(垃圾收集器)进行不定期的回收与空间的释放。