Подтвердить что ты не робот

Настройка Java VM - Xbatch и -Xcomp

Я рассматриваю параметры конфигурации JVM для запуска Alfresco, главным образом этот документ Alfresco Wiki. Одна из рекомендаций - использовать флаги JVM -Xcomp и -Xbatch. Обоснование этого:

Если вы хотите, чтобы Hotspot прекомпилировал классы, вы можете добавить [-Xcomp и -Xbatch]. Это, однако, значительно увеличит время запуска сервера, но будет выделять недостающие зависимости, которые могут быть удалены позже.

Из того, что я читал в другом месте о флажках -Xcomp и -Xbatch, мне интересно, действительно ли они приносят какую-либо пользу.

  • -Xcomp получает HotSpot для компиляции всего кода с максимальной оптимизацией, тем самым отказываясь от любого профилирования, которое VM проведет через стандартное управление системой.
  • -Xbatch останавливает компиляцию фона, что означает поток, который заставлял код скомпилировать блоки до завершения компиляции. Однако после завершения компиляции ранее заблокированный поток не будет запускать скомпилированный код, он все равно будет запускать интерпретируемый код. Это было изменение в Java 6 (Mustang) - до Mustang, потоки, заблокированные для компиляции по наличию флага -Xbatch, гарантированно выполнялись в скомпилированном коде, как только компиляция была завершена. Поэтому я предполагаю, что рекомендация флага -Xbatch является реликтом запуска Alfresco на старых виртуальных машинах.

Есть ли у кого-нибудь мысли? Моя склонность состоит в том, чтобы избавиться от этих двух флагов и полагаться на виртуальную машину, чтобы все было в порядке.

Я хотел бы добавить две вещи, прежде всего, что у меня пока нет доступа к экземпляру Alfresco, чтобы проверить это, а во-вторых, я действительно не знаю, какая спецификация машины содержит Alfresco, кроме этого, глядя при других параметрах конфигурации он должен быть 64-битной виртуальной машиной. Несмотря на это, я надеюсь, что у сообщества будет полезный вклад, возможно, из общей точки настройки HotSpot.

4b9b3361

Ответ 1

Вообще говоря, всегда желательно, чтобы компилятор HotSpot настраивался сам. Даже использование Server VM (-сервера) по умолчанию для 64 бит и некоторых машин "серверного класса".

-Xbatch был предназначен в основном для отладки, как описано в блоге Стив Голдман, на котором вы указали:

Таким образом, переключатель -Xbatch не является особенно полезным коммутатором даже в дни pre-mustang. Он несколько полезен для разработчиков jvm, поскольку он имеет тенденцию делать запуск более предсказуемым и воспроизводимым.

-Xcomp удаляет возможность собирать информацию для эффективной компиляции. Из сообщение Alex Turner:

Можно подумать, что -Xcomp будет хорошей идеей с точки зрения производительности. Однако это не так! Компилятор JIT использует эти 1000 итераций перед компиляцией для сбора информации о том, как метод должен быть скомпилирован для обеспечения оптимальной эффективности. -Xcomp удаляет свою способность делать это, и поэтому мы можем увидеть проскальзывание производительности.

Без учета производительности я никогда не видел использование этих флагов для обнаружения отсутствующих зависимостей (и может не работать, если какой-либо код все еще интерпретируется), поэтому IMHO, я бы избавился от обоих.

Ответ 2

Alfresco - это управление корпоративным контентом. Я не уверен, как эти флаги влияют на производительность. Затем записка на той же странице сказала.

- Это, однако, значительно увеличит время запуска сервера, но будет выделять недостающие зависимости, которые могут быть затронуты позже. ...

ИМХО, автор действительно не имел в виду прирост производительности. Он написал это как средство для проверки всех зависимостей.