stringtranslate.com

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

HotSpot , выпущенный как Java HotSpot Performance Engine , [1] — это виртуальная машина Java для настольных и серверных компьютеров, разработанная Sun Microsystems , которая была куплена и стала подразделением Oracle Corporation в 2010 году. Его возможности повышают производительность с помощью таких методов, как компиляция «на лету» и адаптивная оптимизация . Это де-факто виртуальная машина 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 решила написать новый более сильный компилятор just-in-time (JIT) для виртуальной машины Java [3] , названный HotSpot server compiler (внутреннее название C2), который изначально был разработан Клиффордом Клик [4] и был расширением его докторской диссертации по оптимизации компиляторов. [5] Название компилятора HotSpot происходит от поведения программного обеспечения: поскольку он запускает байт-код Java , как и в случае с Self VM, HotSpot постоянно анализирует производительность программы на предмет горячих точек , которые выполняются часто или многократно. Затем они становятся целью для оптимизации , что приводит к высокопроизводительному выполнению с минимальными накладными расходами для менее критичного к производительности кода. В одном отчете JVM превзошла некоторые коды C++ или C в некоторых тестах. [6]

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

Функции

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

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

HotSpot написан на C++ и Assembly. В 2007 году Sun оценила, что он содержит около 250 000 строк исходного кода. [11] Hotspot предоставляет:

Флаги JVM

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

Лицензия

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

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

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

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

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

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

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

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

Ссылки

  1. ^ abc "Sun Announces Availability of the Java HotSpot Performance Engine". Пресс-релиз . Sun Microsystems. Архивировано из оригинала 1 ноября 2013 г. Получено 26 марта 2013 г.
  2. ^ Услуги, Хроника Сотрудники и Новости (1997-02-19). "SUN MICRO ПОКУПАЕТ LONGVIEW". SFGATE . Получено 2020-11-05 .
  3. ^ "Cliff Click on Azul's Pauseless GC, Zing, JVM Languages". InfoQ. 2011-01-20 . Получено 2016-05-10 . [...] Anamorphic была приобретена Sun, поэтому первоначальная команда находилась в компании Anamorphic, они пришли с технологией, которая была нацелена на Smalltalk, и перенацелили ее на Java, и вскоре после этого они наняли меня, чтобы сделать новый JIT для их виртуальной машины.
  4. ^ Клик, Клиффорд (апрель 2001 г.). «Компилятор сервера Java HotspotTM». JVM'01: Труды симпозиума 2001 г. по исследованию и технологии виртуальных машин JavaTM . 1 : 1.
  5. ^ «Cliff Click — The Sea of ​​Nodes and the HotSpot JIT». 14 февраля 2020 г. – через YouTube.
  6. ^ Льюис, Дж. П. (2004). «Производительность Java по сравнению с C++». Архивировано из оригинала 2020-04-24 . Получено 2007-10-03 .
  7. Шенкленд, Стивен (18 февраля 1999 г.). «HotSpot наконец-то делает свой след». Cnet .
  8. ^ "Sun Microsystems выпускает самую быструю на сегодняшний день клиентскую платформу Java". Sun Microsystems. 2000-05-08 . Получено 2007-10-03 .
  9. ^ «Повышение производительности виртуальной машины Java ™ HotSpot». docs.oracle.com .
  10. ^ «Повышение производительности виртуальной машины Java ™ HotSpot». docs.oracle.com .
  11. ^ "The HotSpot Group". Sun Microsystems. 2007. Получено 2007-10-03 . Существует около 1500 заголовочных и исходных файлов C/C++, содержащих почти 250 000 строк кода.
  12. ^ "Главное - ЗГК" . OpenJDK Wiki .
  13. ^ "Руководство по настройке сборки мусора виртуальной машины HotSpot (Java 14)". Справочный центр Oracle .
  14. ^ "Параметры Java HotSpot VM". Sun Microsystems . Получено 2009-02-08 .
  15. ^ Mocker, Joseph D. (28.08.2007). "Коллекция параметров JVM". Архивировано из оригинала 30.04.2011 . Получено 08.02.2009 .
  16. ^ Максимович, Дмитрий. "Самый полный список опций -XX для Java 6 JVM". Архивировано из оригинала 2010-01-30 . Получено 2009-02-08 .
  17. ^ Наттер, Чарльз (29.01.2009). "Мои любимые флаги JVM для точек доступа" . Получено 08.02.2009 .
  18. ^ "Sun открывает исходные коды Java-технологии и выпускает исходный код по лицензии GPL версии 2 через сообщества NetBeans и Java.net". Sun Microsystems. 2006-11-13. Архивировано из оригинала 2009-02-09 . Получено 2017-05-06 .
  19. JDK7 Архивировано 15 декабря 2016 г. на Wayback Machine , вс.
  20. ^ "Сертифицированные системные конфигурации Oracle JDK 17". Корпорация Oracle . Получено 01.02.2021 .
  21. ^ "JEP 381: Удалить порты Solaris и SPARC". openjdk.java.net .
  22. ^ Бенсон, Гэри (2007-11-06). "Руководство Гэри по портированию IcedTea". Архивировано из оригинала 2012-07-12 . Получено 2008-01-26 .
  23. ^ Бенсон, Гэри (2008-02-01). "1 февраля 2008". Архивировано из оригинала 2012-07-10 . Получено 2008-02-03 .
  24. ^ Хейли, Эндрю (2008-01-31). "Сделать нулевой ассемблер по умолчанию на ppc" . Получено 2022-02-01 .
  25. ^ Энджел, Лилиан (13.02.2008). "IcedTea 1.6 выпущен с поддержкой Zero-assembler и JNLP!". Red Hat . Получено 13.02.2008 .

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