我有一个与一对多关系的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。这是休眠还是Java的东西?

休眠4.xx
Java 1.7

最佳答案

确保不再使用session.evict(obj)从Hibernate上下文中清除实体。否则,所有这些实体将很快填充您的内存。

如果算法不是问题,那么也可以使用session.clear()清除整个上下文。

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

08-29 00:21