我在控制器中生成了许多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;
    }

...

}


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

最佳答案

出于并发原因,绝对避免使用#1。您可能具有线程A运行方法1和线程B运行方法2,并且其中一个将在其他对象可以使用其构造的对象之前更改mav对象。

07-28 01:47
查看更多