代码如下:
public class Son {
private String name;
public Son(String name) {
this.name = name;
}
}
public class Father {
private List<Son> sons=new ArrayList<Son>();
public Son giveSon(String name ){
return new Son(name);
}
public static void main(String[] args) {
Father father=new Father();
Son a=father.giveSon("a");
father.sons.add(a);
father.giveSon("b");
}
}
长命对象:一直有人引用就是长命对象
- 栈一直引用,如main函数一直运行,它的对象father就一直存活。
- 栈帧出栈后,对象被其他对象引用,例如giveSon(“a”);出栈后背sons引用。
短命对象:没人引用就是短命对象,也称为垃圾对象,因为没人用它,即没人引用它。例如giveSon(“b”)出栈后里面的son没人引用,就变成了垃圾
在JVM中,大部分都是短命对象;少数对象长期存活,例如main函数的栈一直引用father,father的sons就一直引用sonA。