Java 内存泄漏?将Lob与jpa的eclipeLink实现一起使用

Java 内存泄漏?将Lob与jpa的eclipeLink实现一起使用,java,jpa,eclipselink,Java,Jpa,Eclipselink,我面临着一种情况。我有一个实体,它的字节[]由JPA中的@Lob映射,带有eclipseLink Implementation。还有一个oracle数据库 我的问题是,当在一个实体集合上循环时,字节[]留在内存中,因此当有很多实体时,它由java堆空间完成 我试图用@Cacheable false和clean entityManager缓存将@lob隔离在子实体中。两者都不起作用 我已经读到,也许它应该链接到eclipse链接的实现,但是我被卡住了…如果你在一个实体集合上循环,你如何释放内存?如

我面临着一种情况。我有一个实体,它的字节[]由JPA中的@Lob映射,带有eclipseLink Implementation。还有一个oracle数据库

我的问题是,当在一个实体集合上循环时,字节[]留在内存中,因此当有很多实体时,它由java堆空间完成

我试图用@Cacheable false和clean entityManager缓存将@lob隔离在子实体中。两者都不起作用


我已经读到,也许它应该链接到eclipse链接的实现,但是我被卡住了…

如果你在一个实体集合上循环,你如何释放内存?如果没有细节,很难说这不仅仅是应用程序的问题,比如有一个高度互连的对象模型和保留对根的引用。您还可以尝试通过将lob字段标记为lazy并使用“对不起,您是对的”,来懒洋洋地获取lob字段。我在ID上循环并在循环中加载实体。您是否保留对循环中实体的引用?不,我不保留对循环中任何实体的引用。如果您对循环使用相同的EntityManager实例,您应该知道,JPA要求它保留对托管实体的引用—这是通过它读入的任何内容。您的实体只有在释放后才能进行gc,也就是em关闭或清除时。