Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

История [ править ]

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 , как и в случае с собственной виртуальной машиной, HotSpot постоянно анализирует производительность программы для выявления горячих точек, которые выполняются часто или повторно. Затем они подвергаются оптимизации , что приводит к высокопроизводительному выполнению с минимальными накладными расходами для менее критичного к производительности кода. В одном отчете JVM превзошла некоторый код C ++ или C в некоторых тестах. [4]

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

Особенности [ править ]

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

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

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

  • Java Загрузчик классов
  • Байткод Java переводчик
  • Клиентские и серверные виртуальные машины, оптимизированные для соответствующего использования
  • Несколько сборщиков мусора (включая ZGC с очень малым временем паузы) [10] [11]
  • Набор вспомогательных библиотек времени выполнения

Флаги JVM [ править ]

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

Лицензия [ править ]

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

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

Поддерживается Oracle [ править ]

Как и весь Java Development Kit (JDK), HotSpot поддерживается корпорацией Oracle в Windows , Linux , macOS и Solaris . Поддерживаемые архитектуры набора команд (ISA): IA-32 , x86-64 , ARMv7 VFP, ARMv8 и SPARC (только для Solaris). [18]

Порты сторонних производителей [ править ]

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

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

См. Также [ править ]

  • Список виртуальных машин Java
  • Сравнение виртуальных машин Java
  • Производительность Java
  • OpenJDK
  • Da Vinci Machine , проект прототипа расширения JVM для добавления поддержки динамических языков программирования

Ссылки [ править ]

  1. ^ a b c «Sun объявляет о доступности механизма производительности Java HotSpot» . Пресс-релиз . Sun Microsystems . Проверено 26 марта 2013 года .
  2. ^ Услуги, Хроники Персонал и Новости (1997-02-19). «СОЛНЦЕ МИКРО ПОКУПАЕТ ДОЛГОСРОЧНО» . SFGATE . Проверено 5 ноября 2020 .
  3. ^ «Клифф нажмите на Azul's Pauseless GC, Zing, JVM Languages» . InfoQ. 2011-01-20 . Проверено 10 мая 2016 . [...] Anamorphic был приобретен Sun, так что первоначальная команда была в компании под названием Anamorphic, они пришли с технологией, которая была нацелена на Smalltalk, и они перенаправили ее на Java, и вскоре после этого они наняли меня, чтобы я сделал новый JIT для своей виртуальной машины.
  4. ^ Льюис, JP (2004). «Производительность Java по сравнению с C ++» . Архивировано из оригинала на 2020-04-24 . Проверено 3 октября 2007 .
  5. ^ Шенкленд, Стивен (18 февраля 1999). «HotSpot наконец-то оставляет свой след» . Cnet .
  6. ^ «Sun Microsystems выпускает самую быструю клиентскую платформу Java на сегодняшний день» . Sun Microsystems. 2000-05-08 . Проверено 3 октября 2007 .
  7. ^ «Улучшения производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
  8. ^ «Улучшения производительности виртуальной машины Java ™ HotSpot» . docs.oracle.com .
  9. ^ "Группа HotSpot" . Sun Microsystems. 2007 . Проверено 3 октября 2007 . Существует около 1500 заголовочных и исходных файлов C / C ++, содержащих почти 250 000 строк кода.
  10. ^ "Главная - ZGC" . OpenJDK Wiki .
  11. ^ "Руководство по настройке сборки мусора виртуальной машины HotSpot (Java 14)" . Справочный центр Oracle .
  12. ^ «Параметры виртуальной машины Java HotSpot» . Sun Microsystems . Проверено 8 февраля 2009 .
  13. ^ Мокер, Джозеф Д. (2007-08-28). «Коллекция опций JVM» . Архивировано из оригинала на 2011-04-30 . Проверено 8 февраля 2009 .
  14. Максимович, Дмитрий. «Самый полный список опций -XX для Java 6 JVM» . Архивировано из оригинала на 2010-01-30 . Проверено 8 февраля 2009 .
  15. ^ Наттер, Чарльз (2009-01-29). «Мои любимые флаги JVM Hotspot» . Проверено 8 февраля 2009 .
  16. ^ «Sun Open Sources Java Technology и выпускает исходный код под лицензией GPL версии 2 через NetBeans и сообщества Java.net» . Sun Microsystems. 2006-11-13. Архивировано из оригинала на 2009-02-09 . Проверено 6 мая 2017 .
  17. ^ JDK7 , вс .
  18. ^ «Сертифицированные системные конфигурации Oracle JDK 8 и JRE 8» . Корпорация Oracle . Проверено 18 мая 2017 .
  19. ^ Гэри, Бенсон (2007-11-06). «Руководство Гэри по портированию IcedTea» . Архивировано из оригинала на 2012-07-12 . Проверено 26 января 2008 .
  20. ^ Гэри, Бенсон (2008-02-01). «1 февраля 2008 года» . Архивировано из оригинала на 2012-07-10 . Проверено 3 февраля 2008 .
  21. Эндрю, Хейли (31 января 2008 г.). «Сделать нулевой ассемблер по умолчанию на ppc» . Проверено 3 февраля 2008 .
  22. Лилиан, Ангел (13 февраля 2008). «Выпущен IcedTea 1.6 с нулевым ассемблером и поддержкой JNLP!» . Красная шляпа . Проверено 13 февраля 2008 .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Список HotSpot VMOptions
  • Спецификация виртуальной машины Java
  • История оригинальной команды Strongtalk-HotSpot
  • «Sun объявляет о выпуске Java Hotspot Performance Engine» . Архивировано 18 декабря 2006 года . Проверено 27 марта 2014 года .CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  • Репозиторий разработки исходного кода HotSpot Mercurial (система контроля версий) для JDK8