1

Oracle недавно решила начать взимать плату за коммерческое использование своей JVM.

Компания, в которой я работаю, начала вместо этого переходить на использование OpenJDK и обнаруживает, что все работает нормально, за исключением снижения производительности.

Наши серверы являются серверами Linux, и согласно нашей команде производительности,

Мы наблюдали значительную медлительность на большинстве вызовов Java. Мы просмотрели журналы и исследовали несколько звонков, и мы не видим никаких исключений или ошибок, только медлительность.

У кого-нибудь еще есть данные о том, правда ли это, что OpenJDK в среднем медленнее, чем Oracle JVM?

1 ответ1

2

Вы найдете интересную выдержку из сообщения в блоге Oracle:

Вопрос: В чем разница между исходным кодом, найденным в репозитории OpenJDK, и кодом, который вы используете для сборки Oracle JDK?

A: Это очень близко - наш процесс сборки для Oracle JDK выпускает сборку на OpenJDK 7, добавив всего лишь пару частей, таких как код развертывания, который включает в себя реализацию Oracle для плагина Java и Java WebStart, а также некоторые третьи с закрытым исходным кодом. сторонние компоненты, такие как графический растеризатор, некоторые сторонние компоненты с открытым исходным кодом, такие как Rhino, и несколько кусочков, вроде дополнительной документации или сторонних шрифтов. В дальнейшем мы намереваемся открыть все компоненты Oracle JDK с открытым исходным кодом, кроме тех, которые мы рассматриваем как коммерческие функции, такие как JRockit Mission Control (пока недоступно в Oracle JDK), и заменить обремененные сторонние компоненты альтернативами с открытым исходным кодом, чтобы добиться более четного контроля. между базами кода.

Поскольку Oracle отвечает за создание обоих, ясно, что она будет гарантировать, что у ее клиентов будут веские причины для оплаты, а производительность - очевидное средство.

Я считаю, что OpenJDK является JVM только для интерпретатора. Это проще портировать, так как у него нет специфичного для архитектуры кода сборки, но, к сожалению, он менее производительный.

OracleJDK Я думаю, что использует преимущества платформы ABI с плавающей запятой (Soft Float на RP1 и Hard Float на RP2). В нем также может быть некоторое количество специфичного для платформы кода, чтобы сделать его быстрее.

JIT (Just-in-Time) компилятор был когда-то включен в оба, с именем Shark, но я не знаю, включен ли он в OpenJDK. В Википедии OpenJDK не упоминается JIT, и я нашел эту старую и волнующую проблему - компилятор Remove Shark. Тем не менее, история версий Java в Википедии включает JIT.

Если OracleJDK сегодня включает JIT-компилятор для конкретной платформы, а OpenJDK - нет, это вполне может объяснить разницу в производительности,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .