Hibernate execute()vs在末尾将对象设置为null
我们正在处理循环中大量的实体对象。最后,我们将对象设置为null,以符合垃圾收集的条件Hibernate execute()vs在末尾将对象设置为null,hibernate,Hibernate,我们正在处理循环中大量的实体对象。最后,我们将对象设置为null,以符合垃圾收集的条件 这是正确的还是我们需要使用hibernate execute() 收回对象与在循环结束时将对象标记为null有什么区别 请帮助详细了解 谢谢。仅将实体对象设置为null将没有帮助,因为在Hibernate的一级缓存中仍然会有对它的引用。因此,它将不符合垃圾收集的条件 当您逐出对象时,您将把它从hibernates缓存中取出,然后它将成为垃圾收集的候选对象 因此,如果希望对其进行垃圾收集,则必须将对象标记为nu
谢谢。仅将实体对象设置为null将没有帮助,因为在Hibernate的一级缓存中仍然会有对它的引用。因此,它将不符合垃圾收集的条件 当您逐出对象时,您将把它从hibernates缓存中取出,然后它将成为垃圾收集的候选对象 因此,如果希望对其进行垃圾收集,则必须将对象标记为null(清除引用)并将其从hibernate的缓存中逐出(清除hibernate的引用)
另外,除了释放内存空间(垃圾收集后),将实体从缓存中取出还可以节省大量CPU时间,因为每次进行新查询时,Hibernate都会对该缓存进行脏检查。处理
@entity
是否重要?另外,execute
只是从缓存中删除对象,这样您只需保持entity manager缓存使用率较低。