- Является ли это приложением Java EE или Java SE?
- Как вы управляете вашим менеджером сущностей?
Менеджер сущностей обычно связан с контекстом.Во время транзакции каждая восстанавливаемая сущность будет помещена в нее, и это будет кеш для всех сущностей. Когда транзакция фиксируется, JPA будет искать изменения в контексте и фиксировать изменения в базе данных.
Это означает, что если вы восстановите 1 миллион строк, у вас будет 1 миллион сущностей в вашем контексте, и они не будут собираться мусором, пока вы не закроете свой менеджер сущностей.
Поскольку вы ссылаетесь на JTable IМожно только предположить, что это приложение JSE.В этом типе приложения вы полностью контролируете контекст.В этом типе приложений существует взаимно-однозначная связь между контекстом и менеджером сущностей (что не всегда имеет место в среде Java EE).
Это означает, что вы можете либо создать менеджер сущностей длязапрос (т. е. транзакция или беседа) или менеджер сущностей на весь срок службы приложения.
Если вы используете второй подход, ваш контекст никогда не собирается сборщиком мусора, и чем больше объектов вы читаете из базы данных,оно становится больше, пока вы в конечном итоге не достигнете проблемы с памятью, подобной той, которую вы описываете.
Я не говорю, что это является причиной вашей проблемы, но это, безусловно, может быть хорошим руководством для поиска основной причины,тебе не кажется?