Есть ли гарантия, что загрузчик классов Java (по умолчанию, системный) не не пытается загрузить классы, на которые нет ссылок в выполняемом коде? Несколько примеров того, что я имею в виду:
- Я использую
framework.jar
, который, как мне известно, содержит в себе ссылки на другие классы library.jar
, но я использую только ту часть платформы, которая не содержит этих ссылок. Безопасно ли оставлять library.jar
вне дома?
- Статические блоки запускаются при первой загрузке класса. Если ни один запущенный код не содержит ссылок на определенный класс, уверен ли он, что его статический блок не запущен?
Быстрое тестирование, кажется, работает как предполагалось выше, и в любом случае не имеет смысла загружать неиспользуемые классы, но есть ли гарантия на это?
Дополнение: Кажется, что мои "статические блоки запускаются при первой загрузке класса", приведенная выше инструкция несколько неверна. Определенно возможно загрузить классы (одна вещь) без запуска их (другая вещь). Так что я заинтересован в обоих случаях; гарантирует, что классы не получат загружены и не получат run .