2016-11-17 101 views
0

我正在使用spring批次来监视Rabbit MQ。我试图通过每秒运行批处理来缓解压力。目前运行平稳,但二手Perm Generation space仍在继续增长。当批次开始时,30 MB现在在运行30 Hours之后,现在是300 MB。占据所述存储器中的最大目的是春季批次,HSQLDB越来越多

org.hsqldb.persist.RowStoreAVLMemory 28619232 
org.hsqldb.Database 96661000 

这种两个物体保持总存储器的32%。

任何人都可以请建议如何配置HSQLDB不超过5分钟的信息,因为我们没有任何要求重新启动的工作。

+0

为作业存储库使用真实的外部数据库。 –

回答

0

您正在使用HSQLDB和默认的全内存表。所有数据都保存在内存中。这种类型的表允许非常快速的操作,并且非常适合数据不超过一定限制的用例。

您可以添加一个任务来定期删除旧的行。这可以是在增长的表上声明的TRIGGER,这会在插入新行后根据时间戳删除旧行。

或者,您可以使用CACHED表,这些表主要将数据保存在磁盘上。您可以将;hsqldb.default_table_type=cached添加到JDBC连接URL的末尾。在这种情况下,URL必须指示基于文件的数据库,而不是内存中的数据库。

所以HSQLDB可以像外部数据库一样使用,如果你想要的话。