我正在使用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);
}