2016-11-17 9 views
0

Я использую весеннюю партию для мониторинга 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 в конец URL-адреса соединения JDBC. В этом случае URL-адрес должен указывать файловую базу данных, а не в памяти.

Так что HSQLDB может действовать так же, как и внешняя база данных, если вы этого хотите.