代码如下:
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。
