Настройка Java VM - Xbatch и -Xcomp - PullRequest
32 голосов
/ 30 июля 2010

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

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

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

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

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

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

Ответы [ 2 ]

23 голосов
/ 09 августа 2010

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

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

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

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

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

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

0 голосов
/ 07 августа 2010

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

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

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

...