Hibernate和java堆空间错误
我有一个股票和股票记录类的一对多的关系
有存货。哈佛商学院。xml,我有一个这样定义的集合
<bag name="stockRecords" table="stockRecords" inverse="true" lazy="true"
fetch="select">
<key>
<column name="stock_Records" not-null="true" />
</key>
<one-to-many class="com.my.model.objects.StockRecords" />
</bag>
我一次只买一只股票。问题就在这里
Stockrecords有一个字段(字符串类型),平均包含500000个字符
在库存记录中。哈佛商学院。xml
<property name="summary" type="string" lazy="true" >
<column name="summary" />
</property>
当我基于id访问一个股票实体时,我试图从该股票的所有股票记录中构建一个包含所有摘要字段的字符串。我得到java堆空间错误,我的jvm设置为512m。这是hibernate还是java
冬眠4。xx java 1.7
# 1 楼答案
确保在不再需要时立即用
session.evict(obj)
从Hibernate上下文中清除实体。否则,所有这些实体都会很快填满你的记忆如果算法不存在攻击性问题,还可以使用
session.clear()
清除整个上下文如果这还不够,则应该考虑增加java堆大小。