【发布时间】:2011-11-02 13:15:34
【问题描述】:
我们试图找出内存泄漏,现在我们正在考虑实体模型的大小和实体之间的关系。我们使用 EclipseLink 2.0.2 作为在 WebLogic 10.3.3 中运行的 JPA 提供程序。
我们的模型包含 162 个实体。这些并非都直接相互连接,但您可以通过传递关系从一个起始实体导航到任意其他实体。除一对一之外的所有关联都是延迟加载的。
那么,您最大的实体模型是什么?您是否考虑过任何内存泄漏或其他有线行为?您对设计实体模型有什么建议吗?您是否遇到过导致问题的常见模式?
【问题讨论】:
-
你的问题太宽泛了。 162不是一个小数字,也不是一个很大的数字。以最自然的方式设计您的模型,并确保大多数关联是惰性的,以避免在每个事务中加载一半的数据库。
-
内存消耗是否随着时间的推移而增加,或者它“只是”太高了? EntityManager 中的实体数量是否会随着时间增加?
-
PermGen 消耗随着时间的推移而增加。如何找出由实体管理器管理的实体数量。由于我们使用的是容器管理的持久性,我假设每次调用后都会清除 em。
-
您是否做过堆分析以查看堆中的对象类型和数量?我建议将 JRockit JVM 与 Mission Control 一起使用。 Mission Control 会让你看到大量的信息(类似于 jvisualvm,但比 jvisualvm 更好)
标签: java jpa weblogic eclipselink