Обратите внимание, что ответ на этот вопрос может варьироваться в зависимости от реализации:
ли все машинный код, который может запустить Jvm храниться в этой области, или только некоторые горячий код хранится здесь?
кэш коды почти всегда будет использоваться для кэширования горячих метод (или методы, которые были когда-то считались горячая С1 + С2 (многоуровневого сборником)
Из какой книги это говорит, что клиентский компилятор (C1) с большей вероятностью исчерпает памяти в области кеша, тогда как серверный компилятор (C2) этого не делает. Я - , немного запутавшийся в этом. Это потому, что только компилятор сервера компилирует горячую часть , а также прервать другую часть? В этом случае не должен быть медленным компилятором сервера?
C1 компилятор компилирует все. C2 ждет, пока не найдет некоторые оптимизации, которые могут быть применены, а затем применяет эти оптимизации и компилирует методы (не всегда верно, но в основном).
Обратите внимание, что C1 может скомпилировать один и тот же метод несколько раз.
Сколько раз код выполняется до C1 & C2 будет компилировать их соответственно?
Метод может быть скомпилирован, даже если он вызывается только один раз, если C1/C2 обнаруживают, что требуется много времени для запуска.
Вы можете использовать JITWatch для просмотра C1 и C2 в действии.
Кстати, если вы заинтересованы в производительности, [эта книга] (http://shop.oreilly.com/product/0636920028499.do) дает хороший обзор многих аспектов этого. – biziclop
@biziclop Хорошее предложение, спасибо. –