代码如下:

    1. public class Son {
    2. private String name;
    3. public Son(String name) {
    4. this.name = name;
    5. }
    6. }
    7. public class Father {
    8. private List<Son> sons=new ArrayList<Son>();
    9. public Son giveSon(String name ){
    10. return new Son(name);
    11. }
    12. public static void main(String[] args) {
    13. Father father=new Father();
    14. Son a=father.giveSon("a");
    15. father.sons.add(a);
    16. father.giveSon("b");
    17. }
    18. }

    image.png
    长命对象:一直有人引用就是长命对象

    1. 栈一直引用,如main函数一直运行,它的对象father就一直存活。
    2. 栈帧出栈后,对象被其他对象引用,例如giveSon(“a”);出栈后背sons引用。

    短命对象:没人引用就是短命对象,也称为垃圾对象,因为没人用它,即没人引用它。例如giveSon(“b”)出栈后里面的son没人引用,就变成了垃圾
    在JVM中,大部分都是短命对象;少数对象长期存活,例如main函数的栈一直引用father,father的sons就一直引用sonA。