每次创建新的Java对象或重用一个

时间:2013-05-24 16:01:07

标签: java object memory

我在我的控制器中生成了许多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-创建一个对象foreach方法:

@Controller
public class MyController{

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

        return mav;
    }

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

        return mav;
    }

...

}

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我认为单身人士模式正是你要找的:-)

这里有一个很好的解释示例:http://www.oodesign.com/singleton-pattern.html