Я работаю над программой, которая анализирует данные из файла и сохраняет их в базе данных HSQLDB.Когда парсер встречает данные, он создает сущности, которые отображаются в базу данных с использованием JPA / Hibernate. Моя проблема в том, что во время синтаксического анализа приложение использует все больше и больше памяти. Я успешно использовал кэшированные таблицы, так что после завершения синтаксического анализа вся память освобождается, но во время синтаксического анализа она использует способбольше, чем мне удобно.
Я пытался исправить это, вызывая методы flush
и clear
в моем EntityManager, но это не имело никакого эффекта.Я также пытался убедиться, что Entity со ссылками на все другие объекты хранится в памяти.
Кажется, что самыми большими объектами в памяти являются hsqldb.Sessions.Может ли быть так, что HSQlDb кэширует множество данных для каждой транзакции?Кажется чрезмерным, что требуется 1 ГБ ОЗУ, чтобы на диске была только БД размером 120 МБ, не так ли?
Пожалуйста, посоветуйте, что можно попробовать дальше.