2

我在我的控制器中生成了许多 ModelAndView 对象(我发送的每个网页一个),但我不知道哪种策略会节省更多内存并且性能会更好。

这是我的两个选择:

1-在我的控制器中保留一个属性并每次重用它:

@Controller
public class MyController{
    private ModelAndView mav;

    public ModelAndView methodA() {
        mav = new ModelAndView(...);

        return mav;
    }

    public ModelAndView methodB() {
        mav = new ModelAndView(...);

        return mav;
    }

...
}

2-为每个方法创建一个对象:

@Controller
public class MyController{

    public ModelAndView methodA() {
        ModelAndView mav = new ModelAndView(...);

        return mav;
    }

    public ModelAndView methodB() {
        ModelAndView mav = new ModelAndView(...);

        return mav;
    }

...

}

其中之一有什么重要的改进吗?谢谢

4

3 回答 3

2

出于并发原因,绝对避免#1。您可以让线程 A 运行方法 1 和线程 B 运行方法 2,其中一个将更改 mav 对象,然后另一个可以使用它构造的对象。

于 2013-05-24T16:06:15.830 回答
0

我认为单例模式是您正在寻找的:-)

在这里用例子很好地解释:http ://www.oodesign.com/singleton-pattern.html

于 2013-05-24T16:14:25.167 回答
0

如果对象不应该更改状态,这意味着您希望维护它,那么您可以使用单例并停止每次创建新实例。

于 2013-05-24T16:07:27.867 回答