缓存的HSQLDB表在插入后不释放内存

时间:2017-09-04 10:23:13

标签: hibernate memory-leaks hsqldb

我正在使用HSQLDB和Hibernate + Hibernate Search。

我提供以下配置:

<property name="hibernate.connection.url">
            jdbc:hsqldb:file:${jar.path};
            hsqldb.write_delay=false;
            hsqldb.large_data=true;
            hsqldb.default_table_type=cached;
</property>

$ {jar.path}指定要创建DB的目录的运行时路径。

因为我正在使用

保存对象
session.save(object);

内存使用量不断增加。在分析堆转储之后,最大保留堆用于类:

org.hsqldb.RowAction 

下的

org.hsqldb.lib.HsqlArrayList section

如果我评论session.save(object)行,则内存不会增加。

是否有任何其他配置可以防止在HSQL中将对象保存在内存中?

附: :所有session.save(obj)命令都使用以下代码进行批处理。

session.save(obj);

if (batchCount.incrementAndGet() >= 100) {
   session.flush();
   session.clear();
   batchCount.set(0);
}

0 个答案:

没有答案