2016-11-17 132 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可以像外部數據庫一樣使用,如果你想要的話。