java.lang.OutOfMemoryError:使用Hibernate在Postgresql上的表内循环Java堆空间

时间:2017-01-12 11:58:39

标签: java hibernate

问题很明显,但我无法找到解决方案......

我将postgresql表中的700k数据迁移到API。

为此,我创建了以下

    List<MyData> list = new ArrayList<>();
    Filter filter = new Filter();
    filter.setPagination(new Pagination());
      do {
         list = myData.find(filter);
         //code that sends this data to the API 
         //out of scope of the problem
       } while(CollectionUtils.isNotEmpty(list));

我正在使用Hibernate查询此数据,如下所示:

    @SuppressWarnings("unchecked")
    public List<Mensagem> myData(Filter filter {

    Criteria criteria = session.createCriteria(MyData.class);

    if (filter.getPagination().getQuantity() <= 0) {
        filter.getPagination().setQuantity(countMyData());
    }

    dealWithPagination(filter, criteria);
    return criteria.list();
}

问题是每当我在do /中循环时,mydata的所有对象都在堆内分配。

我应该怎么做垃圾收集这些物品?因为似乎do / while没有完成,所以不会收集对象。

任何线索?

0 个答案:

没有答案