2009-12-23 20 views

ответ

4

Вы можете включить статистику Hibernate, чтобы увидеть количество открытых и закрытых сеансов: hibernateConfiguration.setProperty(Environment.GENERATE_STATISTICS, "true") Затем используйте SessionFactory.getStatistics(), чтобы посмотреть открытые и закрытые сессии. Это должно сказать вам, если вы проводите сеансы.

Определение того, откуда вытекает утечка, является другой проблемой. Я сделал это, централизуя весь код для получения сеанса, а затем сохраняя трассировку стека при каждом открытии сеанса (по потоку) и удаляя его, когда сеанс закрывается. Периодически просматривайте список открытых сеансов, и в зависимости от того, какие из них остались, просочились. Инструменты профилирования могут сделать это проще, если вы можете воспроизвести утечку в контролируемой среде.

Смежные вопросы