Hibernate 从HSQL DB 1.8迁移到2.x内存问题

Hibernate 从HSQL DB 1.8迁移到2.x内存问题,hibernate,integration-testing,hsqldb,Hibernate,Integration Testing,Hsqldb,我最近将HQLDB从1.8迁移到2.x,之后我的集成(内存中)测试开始使用太多内存。将内存增加到6GB会使测试速度加快,但在某些情况下仍会冻结 我有属性shutdown=true;在url参数上添加hsqldb.write_delay=false不会有任何区别 在升级之前,它工作正常,没有任何问题。我在迁移指南中找不到任何提示如果您只更改了HSQLDB版本,并且它开始出现内存问题,那么这是一个内存泄漏错误 升级到HSQLDB版本,因为2.0之后出现了关于内存泄漏的错误修复,请参阅自2.0以来的更

我最近将HQLDB从1.8迁移到2.x,之后我的集成(内存中)测试开始使用太多内存。将内存增加到6GB会使测试速度加快,但在某些情况下仍会冻结

我有属性shutdown=true;在url参数上添加hsqldb.write_delay=false不会有任何区别


在升级之前,它工作正常,没有任何问题。我在迁移指南中找不到任何提示

如果您只更改了HSQLDB版本,并且它开始出现内存问题,那么这是一个内存泄漏错误

升级到HSQLDB版本,因为
2.0
之后出现了关于内存泄漏的错误修复,请参阅自2.0以来的更改列表,其中一个错误修复说明:

修复了基于磁盘的应用程序导致速度降低和内存泄漏的问题 结果集

使用HSQLDB减少内存消耗:

使用此语法创建表肯定会减少内存消耗,因为磁盘上存在这样的表,并且只有部分表加载到内存中:

CREATE CACHED TABLE YOUR_TABLE_NAME
确认HSQLDB是问题所在:

您可以随时对应用程序进行内存配置,以确认高内存消耗的原因。这是一个已经与JDK一起安装的工具,可以使用命令
jvisualvm
通过命令行启动


检查此项以了解它如何帮助解决内存问题。

目前HSQLDB中没有内存泄漏。当您使用内存数据库时,您需要清除测试期间插入数据库的数据。数据似乎没有在你的应用程序中发布

确保释放架构中所有表及其数据的最简单方法是:

DROP SCHEMA schemaname CASCADE
或者在一系列测试后关闭数据库:

SHUTDOWN
在一些测试完成后,使用您的模式名执行上述语句以释放所有数据


与版本1.8.0相比,主要的变化是对事务的支持。Hibernate以不同的方式对待新版本。因此,您需要检查某些连接是否保持打开状态,因此在最后一个连接关闭时会执行关机操作。

如果您升级了HSQLDB版本以外的其他内容,是否可以回发更改的内容?还要让我们知道数据集的大小,是不是有很多数据?@jhadesdev没有升级,只是用2.3.1替换了hsql 1.8,仅此而已。问题是新的hsql在删除表时确实存在内存问题。现在我删除表并重新创建数据库。问题消失了。谢谢回复。我用从2.0到2.3.1的所有版本测试了我的应用程序,得到了相同的结果。使用接近3GB的内存和1.8的内存,最大使用500mb内存没有问题。我做的是内存测试,不是基于磁盘或服务器的。我一直在监视VisualVM线程,加载了这么多类,但没有从内存中删除。还是找不到解决办法。Cheers问题是,通过使用DELETE FROM TABLE清除了数据库表,我将其替换为删除表并重新创建它们,从而解决了内存问题。