某服务在线上总是只能稳定几天 有时一需要需要重启几次,每次失去响应时 必须要重启才能解决。 同容器下的其他服务正常,此前看过日志 发现服务挂掉前有内存溢出的情况。 但是内存降下来后 其他服务都恢复了,就它没能恢复,总是要手工处理,很不好。 我猜测是因为其他代码比较老,直接是JSP或Servlet等形式,每次请求都生成对象, 看了下SpringMVC的控制器的单例模式,默认其他就是单例模式( Singleton ) 为的是减少内存申请的开销和占用,本质是个好的出发点, 在控制器声明出增加注解将其修改为Session模式,因为是web项目,我想Session模式应该是web项目最适合的场景了。 代码就一行: @Scope(value = “session”) //session模式 分别测试了模式的单例模式, 增加了打印Controller的Object的ID的代码如下 : _log.info(“loading form page”); _log.info(“session is :”+req.getSession().getId()); _log.info(“object is :”+ java.lang.System.identityHashCode(this)); 测试得到对象的identityHashCode符合预期: 2017-10-21 20:00:34,191 DEBUG – DispatcherServlet with name ‘springMVC’ processing GET request for [/********/******/****.do] 2017-10-21 20:00:34,192 DEBUG – Looking up handler method for […]