В примере аннотации @remove для EJB с отслеживанием состояния аннотированный метод аннотирует переменные экземпляра компонента. Почему? Конечно, уничтожение bean-компонента уничтожает его содержимое, то есть любые переменные?
Спасибо, Джон
В примере аннотации @remove для EJB с отслеживанием состояния аннотированный метод аннотирует переменные экземпляра компонента. Почему? Конечно, уничтожение bean-компонента уничтожает его содержимое, то есть любые переменные?
Спасибо, Джон
Установка для всех полей объекта значения null
дает два полезных эффекта:
Он обеспечивает жесткий барьер против логических ошибок, которые могут привести к повторному использованию недопустимого объекта. Приложение будет аварийно завершать работу вместо того, чтобы молча выдавать неправильные результаты.
Это помогает сборщику мусора Java VM, удаляя ребра из графа ссылок на объекты, тем самым повышая общую производительность.
null
. Если это простое задание в ходе обычной работы, это хорошо и полезно, по крайней мере, согласно моему профилировщику. Если требуется копировать работу сборщика мусора путем явного обхода сложных структур, то это очень плохая идея. В общем, нужно профилировать свою программу, прежде чем идти на такие микрооптимизации...
- person thkala; 07.05.2012
Можете ли вы опубликовать исходный код примера? Или не надо. Упреждающая установка null
не требуется - когда EJB будет уничтожен и вскоре после этого будет собран мусор, все объекты, на которые он ссылается (конечно, при условии, что на них нет других ссылок), также будут удалены сборщиком мусора.
Если ejbRemove(), атрибуты экземпляра стираются, и клиент все еще имеет ссылку на экземпляр. Клиент по-прежнему может получить доступ к тому же объекту. Это нежелательно.