1
我有一个弹簧休息控制器实例化一个新的POJO。这个POJO将被用于从一个数据库中反序列化一个XML对象。Spring引导 - 为什么我的Restcontroller不能释放对新POJO的引用?
我注意到与IDEA内存视图插件,在我的应用程序的生命周期,只有一个控制器对象被创建(按预期),但对控制器的每个请求创建一个新的POJO实例,而不是垃圾收集甚至请求完成后。
这导致内存不足异常。
什么是解决这个问题的最好方法?
@RestController
public class VendorController {
private ChuckNorris chuckNorris;
@RequestMapping("/vendor")
public String vendors() {
ChuckNorris chuckNorris = new ChuckNorris();
chuckNorris.setType("roundhouse");
return "test";
}
}
在该代码中,每个请求创建一个新的查克·诺里斯对象,直到应用程序终止他们挂在内存中。
在我现实世界的例子中,控制器调用Autowired服务组件。它实际上创建POJO并调用另一个Autowired服务来填充它。 但是,当我完成完整的http请求/响应,然后执行另一个http请求时,第一个POJO仍然保留在内存中。 这就像服务组件为每个请求创建一个新的POJO,但从未释放对它的引用。 – Faxy