Есть ли различия в производительности между OpenJDK и Oracle?

438
Brad Parks

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

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

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

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

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

1
Это то, что ваша компания должна была рассмотреть как часть анализа затрат / выгод, прежде чем вносить изменения. Связанные / кросс-сайт сайт: https://stackoverflow.com/questions/31153584/why-is-there-such-a-performance-difference-on-raspberry-pi-between-open-and-orac Mokubai 5 лет назад 0
@Mokubai - спасибо за ответ - я видел это, но ищу более официальные ответы - наверняка кто-то достаточно официальный должен иметь какие-то сравнительные сравнения между ними? Brad Parks 5 лет назад 0
От .Java 11 разница заключается в установке программы, и Oracle предложит поддержку подписчикам через 6 месяцев, до этого она будет бесплатной. Peter Lawrey 5 лет назад 0

1 ответ на вопрос

1
harrymc

Вы найдете интересную выдержку из сообщения в блоге 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 (точно в срок) компилятор был однажды включен в оба имени акулы, но у меня нет знания, если он включен в OpenJDK. В Википедии OpenJDK не упоминается JIT, и я нашел эту старую и волнующую проблему - компилятор Remove Shark . Тем не менее, история версий Java в Википедии включает JIT.

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