Высокое потребление памяти при настройке нескольких сеансов в веб-приложении Dynami c - PullRequest
0 голосов
/ 13 марта 2020

У нас есть динамический c веб-проект 3.0, использующий Java server face 2.2 и JPA 2.1, Hibernate 4.2.3, где фабрика с несколькими сеансами, подключенная к нескольким идентичным базам данных, создается с использованием источника данных NON-JTA. Мы используем многопользовательскую архитектуру. После анализа дампа кучи указанного приложения было видно, что каждая фабрика сеансов содержит все классы сущностей нашего веб-приложения, которые потребляют много памяти. Для лучшего понимания рассмотрим следующий фактический сценарий выполнения.

Наше приложение генерирует фабрику 200 сеансов для базы данных 200. Наше приложение содержит всего 420 сущностей класса. После анализа дампа кучи было замечено, что было сгенерировано всего 200 сессий, которые содержали экземпляры всех 420 классов сущностей по отдельности, поэтому каждая фабрика сессий занимала около 80 МБ памяти. Таким образом, общее потребление памяти становится 16 ГБ. Что является исключительно высоким потреблением.

В другом сценарии, когда мы сократили число сущностей с 420 до 1, тогда вся фабрика сессий для 200 баз данных берет память, что является минимальным и приемлемым для нашего случая.

Итак, мы думаем, что фабрика сессий потребляет слишком много памяти, когда мы добавляем больше классов сущностей, в нашем запросе есть какие-либо возможные способы совместного использования этих классов сущностей между всеми сессиями или любой другой способ уменьшить потребление памяти?

Для справки мы прилагаем скриншот снимка кучи для трех сеансов.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...