Это все еще большая проблема в JSF. Fo, если у вас есть метод isPermittedToBlaBla
для проверок безопасности, и в вашем представлении у вас есть rendered="#{bean.isPermittedToBlaBla}
, тогда метод будет вызываться несколько раз.
Проверка безопасности может быть сложной, например. LDAP-запрос и т. Д. Поэтому вы должны избегать этого с помощью
Boolean isAllowed = null ... if(isAllowed==null){...} return isAllowed?
, и вы должны убедиться в этом в каждом сеансе.
Ich думаю, что JSF должен реализовать здесь некоторые расширения, чтобы избежать множественных вызовы (например, аннотация @Phase(RENDER_RESPONSE)
вычисляет этот метод только один раз после фазы RENDER_RESPONSE
...)
Я лично использую Визуальный Детектор Утечки , хотя он может вызвать большие задержки, когда большие блоки пропущены (он отображает содержание всего пропущенного блока).
У меня был хороший опыт с Рациональный, Очищают . Я также услышал хорошие вещи о Valgrind
Попробуйте Детектор Утечки памяти Jochen Kalmbach на Проекте Кода. URL к последней версии был где-нибудь в комментариях, когда я в последний раз проверил.
Если вы не хотите перекомпилировать (как требует Visual Leak Detector), я бы порекомендовал WinDbg , который является одновременно мощным и быстрым (хотя его не так просто использовать
С другой стороны, если вы не хотите связываться с WinDbg, вы можете взглянуть на UMDH , который также разработан Microsoft, и его легче изучить .
Просмотрите эти ссылки, чтобы узнать больше о WinDbg, утечках памяти и управлении памятью в целом: