我正在建立一个三层应用程序:
1 - 收到第一层的传入请求
2 - 第二层是使用模型映射器实现业务逻辑并将域对象解析为DTO。
3 - 第三层正在实现所有CRUD操作
在第三层,我使用实体管理器来执行我的CRUD操作,并在我的每个方法中创建一个而不关闭它。
在执行大量请求时,在每个请求之后不关闭我的实体管理器并在每个方法中创建一个实例管理器的事实是否与我的内存不足错误相关?
提前致谢
答案 0 :(得分:0)
获得OOM可能有多种原因;大部分时间都是由于您在问题中提到的类似问题。
您是否尝试关闭实体管理器,然后验证您是否收到OOM异常?
结算实体经理取决于您处理交易的方式。如果您以编程方式创建EM,那么您需要处理关闭。如果它是由持久化上下文处理的东西,那么你就不需要。
以下是与实体经理相关的信息性问题/答案。 Should JPA Entity Manager be closed?
此外,您可以使用一些内存分析器工具来查看堆转储。