Hibernate和java堆空间错误

时间:2016-12-06 20:25:02

标签: java hibernate heap-memory

我有一个Stock和StockRecords课程,有一对多的关系。

在Stock.hbm.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个字符

在StockRecords.hbm.xml

<property name="summary" type="string" lazy="true"  >
        <column name="summary" />
    </property>

当我基于id访问其中一个股票实体时,我正在尝试从该股票的所有股票记录中构建所有汇总字段的字符串。我得到java堆空间错误她我的jvm设置设置为512m。这是hibernate还是java的东西?

hibernate 4.xx java 1.7

1 个答案:

答案 0 :(得分:1)

确保只要您不再需要,就可以使用session.evict(obj)从Hibernate上下文中清除实体。否则所有这些实体都会很快填满你的记忆。

如果您的算法不是一个问题,您还可以使用session.clear()清除整个上下文。

如果这还不够,您应该考虑增加Java堆大小。