2016-01-13 2 views
0

Из моего понимания в Java Optimization с использованием динамической перекомпиляции JVM будет постоянно перекомпилировать разделы байтового кода на основе профилирования в реальном времени, что сделает его быстрее, чем даже хорошо написанная C-программа. Один из моих коллег заметил, что методы манипулирования байтовым кодом, такие как Spring, Hibernate или AspectJ, маскируют разделы из динамически перекомпилированных должным образом. Это правда?Влияет ли зависимость от зависимостей на способность JVM оптимизировать?

Я использую Google Guice для Injection Dependency Injection, и мне было интересно, будет ли потенциальная потеря оптимизации замедлять работу, чем при использовании простой традиционной Java.

+0

Здесь немного путаницы: 1) Когда оптимизация Java такая же, как и динамическая перекомпиляция? 2) Как динамическая перекомпиляция и зависимость зависят от динамической перекомпиляции? 3) Можете ли вы предоставить источник своего «комментария», чтобы обосновать ваше заявление? –

+0

Почему вы думаете, что «методы манипулирования байтовым кодом, такие как Spring, Hibernate или AspectJ», имеют какое-либо отношение к инъекции зависимостей? - они этого не делают, это разные вещи. –

+0

Спасибо, вот что я подумал. Другими словами, манипулирование байтовым кодом не влияет на динамическую перекомпиляцию. –

ответ

0

В большинстве случаев Spring использует java-прокси (java.lang.reflect.Proxy) для таких функций, как @Cache, ... всякий раз, когда доступен интерфейс, и регулярное отражение для инъекции зависимостей (он будет вызывать setXxx когда свойство xxx @Autowired аннотируется).

Даже если требуется обработка байт-кода, этот байт-код сохраняется в одном из приложений ClassLoader и, следовательно, доступен для оптимизации JVM. Я не вижу, как это будет отличаться от обычного кода.

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