java - Hibernate和java堆空间错误

标签 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有一个字段(String类型),平均包含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

最佳答案

确保在不再需要时立即使用 session.evict(obj) 从 Hibernate 上下文中清除实体。否则所有这些实体很快就会填满你的内存。

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

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

关于java - Hibernate和java堆空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004199/

相关文章:

arrays - 能否在一行中(重新)设置数组的所有值(在初始化之后)?

C++ 堆分配和内存重用

java - 在单例中创建线程

java - 如何配置Hibernate进行开发测试

java - Hibernate注解异常

c - 为什么地址清理程序会在我的乘法矩阵中导致堆缓冲区溢出错误?

java - Liferay 嵌套 portlet

java - JAX-WS 调度请求设置内容类型

java - 在 Android 上保存和恢复日历应用程序的数据

java - 在 Hibernate 中需要帮助