没有变量引用的新实例是否会被Java垃圾收集?

时间:2014-03-12 12:39:56

标签: java model-view-controller garbage-collection

关于以下Java类:

public class GuiController {
    private GuiView view;

    public GuiController(GuiView view){
        this.view =  view;
    }

    //responds to user inputs to GuiView
}

public class GuiView {
    //interacts with user
}

//lives in the Servlet context
public class SomeLongLifeClass {
    private GuiView view;

    public SomeLongLifeClass(){
        this.view = new GuiView();
        new GuiController(view);
    }
}

GuiController最终会被垃圾收集,因为它没有外部引用吗?它不应该是因为它与被引用的GuiView积极交互,我只能解决原因。

在第二个问题中,如果不是这样的话,应该如何实现视图/控制器模式?

1 个答案:

答案 0 :(得分:3)

原样,是的,您的GuiController实例符合GC的条件。在更现实的代码中,您可能会将控制器作为监听器(直接或间接)注册到GuiView组件,因此控制器将从视图中引用,该视图本身由GUI线程引用。