stringtranslate.com

HotSpot (виртуальная машина)

HotSpot , выпущенный как Java HotSpot Performance Engine , [1] представляет собой виртуальную машину Java для настольных и серверных компьютеров, разработанную Sun Microsystems и в настоящее время поддерживаемую и распространяемую Oracle Corporation . Он отличается улучшенной производительностью благодаря таким методам, как своевременная компиляция и адаптивная оптимизация . Это де-факто виртуальная машина Java, служащая эталонной реализацией языка программирования Java .

История

Java HotSpot Performance Engine был выпущен 27 апреля 1999 года [1] и основан на технологиях реализации языка программирования Smalltalk под названием Strongtalk , первоначально разработанного компанией Longview Technologies, которая продавалась как Animorphic. Виртуальная машина Longview была основана на виртуальной машине Self , в которой интерпретатор заменил быстрый и бестолковый первый компилятор. Когда Sun закрыла проект Self, два ключевых человека, Урс Хельцле и Ларс Бак, покинули Sun, чтобы основать Longview. В 1997 году Sun Microsystems приобрела Animorphic. [2]

Вскоре после приобретения Animorphic компания Sun решила написать новый JIT-компилятор для виртуальной машины Java. [3] Этот новый компилятор дал начало названию HotSpot , полученному из поведения программного обеспечения: при запуске байт-кода Java , как и в случае с Self VM, HotSpot постоянно анализирует производительность программы на наличие горячих точек , которые выполняются часто или неоднократно. Затем они направляются на оптимизацию , что приводит к высокопроизводительному выполнению с минимальными накладными расходами для менее критичного к производительности кода. В одном отчете JVM превзошла код C++ или C в некоторых тестах. [4]

Первоначально доступный как надстройка для Java 1.2, [5] HotSpot стал JVM Sun по умолчанию в Java 1.3. [6]

Функции

JRE (первоначально от Sun, теперь от Oracle) включает две виртуальные машины: одна называется Client , а другая — Server . Версия Клиента настроена на быструю загрузку. Он использует интерпретацию. Версия Server загружается медленнее, что требует больше усилий для создания высокооптимизированных JIT-компиляций для повышения производительности. Обе виртуальные машины компилируют только часто используемые методы, используя настраиваемое пороговое значение количества вызовов, чтобы решить, какие методы компилировать.

Многоуровневая компиляция, опция, представленная в Java 7, использует как клиентский, так и серверный компиляторы в тандеме, чтобы обеспечить более быстрое время запуска, чем серверный компилятор, но аналогичную или лучшую пиковую производительность. [7] Начиная с Java 8, многоуровневая компиляция используется по умолчанию для виртуальной машины сервера. [8]

HotSpot написан на C++ и ассемблере. По оценкам Sun, в 2007 году он содержал около 250 000 строк исходного кода. [9] Точка доступа обеспечивает:

Флаги JVM

HotSpot поддерживает множество аргументов командной строки для параметров выполнения виртуальной машины. Некоторые из них являются стандартными и должны быть найдены на любой соответствующей виртуальной машине Java ; другие специфичны для HotSpot и не могут быть найдены в других JVM (параметры, начинающиеся с -X или -XX, являются нестандартными). [12] [13] [14] [15]

Лицензия

13 ноября 2006 года HotSpot JVM и Java Development Kit (JDK) были лицензированы по лицензии GNU General Public License (GPL) версии 2. [16] Этот код стал частью Java 7 . [17]

Поддерживаемые платформы

Поддерживается Oracle

Как и весь пакет Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle Corporation в Windows , Linux и macOS . Поддерживаемые архитектуры набора команд (ISA): x86-64 и AArch64 . [18] Начиная с JDK 15, Solaris и SPARC больше не поддерживаются. [19]

Порты третьих лиц

Порты также доступны третьими лицами для различных других операционных систем Unix . Поддерживается несколько различных аппаратных архитектур, включая x86, PowerPC и SPARC (только Solaris).

Портирование HotSpot затруднено, так как большая его часть почти полностью написана на языке ассемблера , [20] хотя некоторые его разделы также написаны на чисто совместимом со стандартами ISO C++ . Чтобы исправить это, проект IcedTea разработал общий порт интерпретатора HotSpot под названием Hotspot с нулевым ассемблером (или нулевым ), почти без ассемблерного кода. Этот порт предназначен для легкой адаптации компонента-интерпретатора HotSpot к любой процессорной архитектуре Linux . Код Hotspot с нулевым ассемблером используется для всех портов HotSpot с архитектурой, отличной от x86 ( PowerPC , Itanium ( IA-64 ), S390 и ARM ), начиная с версии 1.6. [21] [22] [23]

Смотрите также

Рекомендации

  1. ^ abc «Sun объявляет о доступности механизма производительности Java HotSpot». Пресс-релиз . Сан Микросистемс. Архивировано из оригинала 1 ноября 2013 года . Проверено 26 марта 2013 г.
  2. ^ Услуги, сотрудники хроники и новости (19 февраля 1997 г.). «SUN MICRO ПОКУПАЕТ LONGVIE». СФГЕЙТ . Проверено 5 ноября 2020 г.
  3. ^ «Клифф Клик на языке Azul GC, Zing, JVM без пауз» . ИнфоВ. 20 января 2011 г. Проверено 10 мая 2016 г. [...] Anamorphic была приобретена Sun, поэтому первоначальная команда работала в компании под названием Anamorphic, они пришли с технологией, ориентированной на Smalltalk, переориентировали ее на Java и вскоре после этого наняли меня для создания новой JIT для своей виртуальной машины.
  4. ^ Льюис, JP (2004). «Производительность Java по сравнению с C++». Архивировано из оригинала 24 апреля 2020 г. Проверено 3 октября 2007 г.
  5. Шенкленд, Стивен (18 февраля 1999 г.). «HotSpot наконец-то оставил свой след». Cnet .
  6. ^ «Sun Microsystems выпускает самую быструю на сегодняшний день клиентскую платформу Java» . Сан Микросистемс. 08 мая 2000 г. Проверено 3 октября 2007 г.
  7. ^ «Повышение производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
  8. ^ «Повышение производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
  9. ^ "Группа HotSpot". Сан Микросистемс. 2007 . Проверено 3 октября 2007 г. Существует около 1500 заголовочных и исходных файлов C/C++, содержащих почти 250 000 строк кода.
  10. ^ "Главное - ЗГК" . OpenJDK Wiki .
  11. ^ «Руководство по настройке сборки мусора виртуальной машины HotSpot (Java 14)» . Справочный центр Oracle .
  12. ^ «Параметры виртуальной машины Java HotSpot» . Сан Микросистемс . Проверено 8 февраля 2009 г.
  13. ^ Мокер, Джозеф Д. (28 августа 2007 г.). «Коллекция опций JVM». Архивировано из оригинала 30 апреля 2011 г. Проверено 8 февраля 2009 г.
  14. ^ Максимович, Дмитрий. «Наиболее полный список опций -XX для Java 6 JVM». Архивировано из оригинала 30 января 2010 г. Проверено 8 февраля 2009 г.
  15. ^ Наттер, Чарльз (29 января 2009 г.). «Мои любимые JVM-флаги горячей точки» . Проверено 8 февраля 2009 г.
  16. ^ «Sun использует технологию Java с открытым исходным кодом и выпускает исходный код по лицензии GPL второй версии через сообщества NetBeans и Java.net» . Сан Микросистемс. 13 ноября 2006 г. Архивировано из оригинала 9 февраля 2009 г. Проверено 6 мая 2017 г.
  17. ^ JDK7. Архивировано 15 декабря 2016 г. в Wayback Machine , вс.
  18. ^ «Конфигурации сертифицированной системы Oracle JDK 17» . Корпорация Оракл . Проверено 1 февраля 2021 г.
  19. ^ «JEP 381: Удалите порты Solaris и SPARC» . openjdk.java.net .
  20. ^ Бенсон, Гэри (6 ноября 2007 г.). «Руководство Гэри по портированию IcedTea». Архивировано из оригинала 12 июля 2012 г. Проверено 26 января 2008 г.
  21. ^ Бенсон, Гэри (1 февраля 2008 г.). «1 февраля 2008 г.». Архивировано из оригинала 10 июля 2012 г. Проверено 3 февраля 2008 г.
  22. ^ Хейли, Эндрю (31 января 2008 г.). «Сделать нулевой ассемблер по умолчанию для ppc» . Проверено 1 февраля 2022 г.
  23. ^ Ангел, Лилиан (13 февраля 2008 г.). «IcedTea 1.6 выпущена с поддержкой Zero-assembler и JNLP!». Красная Шапка . Проверено 13 февраля 2008 г.

Внешние ссылки