JVM JIT и Hotspot - В чем различия - PullRequest
7 голосов
/ 28 июля 2011

Я слышал, что эти термины используются, но, похоже, я не могу найти представление верхнего уровня о том, где они вписываются в среду Java.Я знаю, что JIT - это механизм компиляции, но является ли он частью JVM?Что такое горячая точка?Это какой-то новый тип ВМ?

Ответы [ 3 ]

11 голосов
/ 28 июля 2011

JIT - это компиляция "Just In Time", в основном компиляция на лету.

Hotspot - это концепция в JVM, где он компилирует только код, который фактически используется.То есть «горячие» фрагменты кода используются снова и снова.

JVM отслеживает использование, и когда что-то становится достаточно популярным, он ставит этот код в очередь для компиляции, продолжая интерпретировать код.

Когда JIT завершается, он заменяет интерпретированные биты на скомпилированные биты.

Вот почему JVM необходимо "прогреть" для бенчмаркинга и т. Д.

The -Опции сервера и -client JVM Sun / Oracle влияют на это поведение в отношении их агрессивности при работе JIT.

10 голосов
/ 28 июля 2011

JVM является спецификацией. Различные поставщики реализуют спецификацию. Например: Sun (теперь Oracle), IBM, BEA (теперь Oracle), SAP все внедряют спецификацию и предоставляют свои собственные JVM. Конкретная реализация Sun называется Hotspot. BEA называется JRockit.

JIT является частью JVM, которая принимает байт-коды Java и компилирует его в собственный код сборки процессора на компьютере, на котором выполняется программа. Каждый поставщик реализует JIT, используя уникальные сложные алгоритмы. Например: JIT на JRockit отличается от JIT в Hotspot.

7 голосов
/ 28 июля 2011

HotSpot - это имя конкретной JVM .Он включает в себя JIT-компилятор, как и большинство современных JVM, но то, есть ли у JVM его (довольно широкий, открыто рекламируемый и важный, но все же) деталь реализации.Были реализации Java без JIT-компилятора, и они были просто стандартно-компилируемыми.

«Горячая точка» - это также фрагмент кода, который часто вызывается или занимает непропорционально много времени для выполнения (что, вероятно, тамJVM получила свое название, поскольку она - как и многие JIT - предназначена для ускорения, в частности, этих «горячих точек».

...