Comments 4
В Java, как известно, inline-методов нет.
HostSpot JIT давно и успешно инлайнит методы. Настолько давно, что упоминание об этом было еще в документации для Solaris. Причем, это именно JVM, то есть потенциально это применяется ко всем языкам.
Возможно автор хотел выразить какую-то иную мысль, в этом случае надо бы данную фразу как-то переформулировать. Например, что нельзя заинлайнить отдельный конкретный метод? Или что javac этого не делает.
+1
В [языке программирования] Java, как известно, inline-методов нет.
Автор посчитал такую тавтологию излишней, так как то, что речь идёт о языковой конструкции уточняется в следующем же предложении.
Автор посчитал такую тавтологию излишней, так как то, что речь идёт о языковой конструкции уточняется в следующем же предложении.
+1
Ну, я согласен что это терминологическая придирка (по большей части возражения к формулировке «как известно», без уточнения, кому известно и откуда очень часто ошибочной), но технология-то есть. И методы заинлайненные вполне можно продемонстрировать. Даже когда-то давно обсуждалось введение в OpenJDK аннотации Inline, но вроде отказались реализовывать. Видимо, JIT таки лучше знает, что инлайнить.
+1
технология-то есть. И методы заинлайненные вполне можно продемонстрировать.
Разработчик этот процесс почти никак не контролирует, так что это не то же самое. Пользователь подкрутит параметры запуска JVM и всё пойдёт прахом.
Заинлайнены будут только те вызовы, которые JIT посчитает достаточно горячими и если при этом метод будет достаточно небольшим. И тут всё довольно шатко, любая пролетевшая мимо бабочка может изменить картину.
Как пример, одна из недавних регрессий: JDK-8300002
Ну и происходит это на уровне сгенерированного машинного кода, а не байткода.
Даже когда-то давно обсуждалось введение в OpenJDK аннотации @Inline
, но вроде отказались реализовывать.
В Lombok это реализовывать не стали. Для OpenJDK такой JSR не нашёл.
+1
Sign up to leave a comment.
Пошаговая отладка, inline-методы, JVM