2013-08-02 3 views
2

Я вижу в одной из командной строки запуска приложения Java следующий параметр (IBM JVM) -Xcodecache.Значение параметра IBM JVM -Xcodecache

Хотя интуитивно я понимаю, что этот параметр управляет размером кеша для модулей кода, я не могу найти описание этого параметра в любой документации.

Кроме того, как этот параметр относится к кэшированию сервлета, который выполняется с использованием разных настроек? Спасибо за вашу помощь.

ответ

0

Чтение из IBM docs, похоже, что сколько JIT'd код вы можете иметь:

Составленный код помещается в часть процесса JVM пространства называется кэш кода; записывается местоположение метода в кеше , так что в будущем вызовы к нему будут вызывать скомпилированный код .

+0

Похоже, что вторая ссылка касается Sun JVM. – seanmk

2

Take a look at this documentation.

Похоже codecache IBM, где он хранит родной JIT скомпилированный код, сгенерированный из классов. JVM хранит это в отдельном блоке памяти из других ресурсов.

Для многих приложений эта память «кодеки» будет довольно стабильной, как только большинство методов будет скомпилировано JIT. The IBM JVM is smart about how it does this and tries to only use a litle bit more memory than it needs. Однако, в начале жизненного цикла JVM, пока методы все еще скомпилированы JIT или когда код генерирует новые классы или использует отражение, эта память будет потребляться. Когда JVM определяет, что у него недостаточно места в выделенном в данный момент кодеке, он будет выделять новый блок для увеличения размера. Параметр -Xcodecache задает размер этих новых блоков.

Это актуальный отрывок из связанной документации:

JIT-компилятор использует память разумно. Когда кеш кода инициализирован, он потребляет относительно мало памяти. По мере того как больше методов скомпилировано в собственный код, кеш кода динамически вырабатывается до , который удовлетворяет потребностям программы. Пространство, ранее занятое , отбрасываемые или перекомпилированные методы восстанавливаются и повторно используются. Когда размер кеша кода достигает предопределенного верхнего предела, он перестает расти. Компилятор JIT остановит все будущие попытки скомпилировать методы, до , избегая исчерпания системной памяти и влияя на стабильность приложения или операционной системы.

В документации указано, что значение по умолчанию относится к архитектуре, что имеет смысл, поскольку вы, вероятно, захотите распределить различные куски размера, если вы используете 64- или 32-разрядную систему. Если вы хотите настроить это значение, это когда вы запускаете приложение, которое регулярно загружает новые классы в JVM. В этом случае вы можете увеличить значение, чтобы новые распределения происходили реже. Вы не должны устанавливать слишком высокий уровень, поскольку вы не хотите выделять гораздо больше памяти, чем будете использовать. Документация предполагает, что

Разумная отправная точка для настройки для оптимального размера (totalNumberByteOfCompiledMethods * 1.1).

Смежные вопросы