OpenJDK рассматривает возможность включения виртуальной машины Stack Trace для асинхронного API. 

OpenJDK

OpenJDK — это бесплатная версия платформы разработки Java в рамках концепции объектно-ориентированного языка.

Недавно было выпущено предложение по продвижению асинхронной трассировки стека в Java. и что он процветает в процессе улучшения Java OpenJDK. Проект предназначен для определения API AsyncGetStackTrace для асинхронного сбора трассировки стека и включения данных о Java и собственных платформах стека.

Согласно предложению, производительность не пострадает, если API не используется и требования к памяти существенно не возрастут по сравнению с существующим API AsyncGetCallTrace. Новый API не рекомендуется для производственного использования, так как он может привести к сбою JVM. В планы входит минимизация рисков такого инцидента за счет всестороннего тестирования и проверки.

AsyncGetCallTrace используется большинством генераторов. доступных профилей, как с открытым исходным кодом, так и коммерческих, включая async-profiler. Но у него есть два больших недостатка.

  1. это внутренний API, не экспортируемый ни в какие заголовки;
  2. он возвращает только информацию о фреймах Java, то есть их метод и индексы байт-кода.

Эти проблемы затрудняют внедрение профилировщиков и связанных с ними инструментов. Хотя дополнительную информацию можно извлечь из виртуальной машины HotSpot с помощью сложного кода, другая полезная информация скрыта и ее невозможно получить:

Доступна ли скомпилированная платформа Java в сети (в настоящее время доступна только для более скомпилированных платформ).

Уровень сборки фреймворка Java (то есть скомпилированный C1 или C2).
Информация о платформах C/C++, которые не находятся на вершине стека.

Эти даты может быть полезно при профилировании и настройке виртуальной машины для данного приложения, а также при профилировании кода, который использует много JNI.

API будет моделировать APIAsyncGetCallTrace, Кроме того, новый API еще не был предложен для конкретной версии стандарта Java. Следующим выпуском Java является (JDK) 20, который ожидается в марте 2023 года. В Java предусмотрен формальный процесс включения изменений платформы, который позволяет реагировать на изменяющиеся обстоятельства, обеспечивая при этом высокую степень стабильности.

Профилировщики могут вызывать этот API для получения трассировки стека для текущего выполняемого потока. Вызов этого API из обработчика сигналов безопасен, а новая реализация будет не менее стабильной, чем код трассировки стека JFR. Виртуальная машина заполняет информацию о кадре и количество кадров. Вызывающий API должен выделить массиву вызовов достаточно памяти для запрошенной глубины стека.

Виртуальная машина завершает структуру трассировки, которая содержит фактическое количество изображений в массиве изображений или код ошибки. Коды ошибок — это подмножество кодов ошибок для AsyncGetCallTrace.

Хотя API предоставляет больше информации, пространство, необходимое для каждого кадра (например, 16 байт на платформе x86), такое же, как и для существующего APIAsyncGetCallTrace. Возврат информации о платформах C/C++ приводит к раскрытию сведений о реализации, но это также верно для платформ AsyncGetCallTrace Java, поскольку они раскрывают сведения о реализации файлов стандартных библиотек и включают собственные оболочки фреймворков.

Даже опытный разработчик Java может плохо понимать как платформа разрабатывается и поддерживается. Главный урок, который необходимо усвоить, заключается в том, что это действительно открытый процесс.

Основой разработки Java является Java Community Process (JCP). Это своего рода самосознательный базовый документ, который определяет, как вносить изменения в платформу, а также позволяет модифицировать сам процесс. Последняя версия JCP — 2.11, принятая в 2019 году.

JCP формализует то, как новые функции и изменения в Java предлагаются, рассматриваются и утверждаются. (т. е. технические характеристики), включая определение различных ролей, которые могут занимать люди. Эти роли помогают предоставить место, где сообщество пользователей Java может участвовать в управлении платформой.

Чтобы предложить новые функции и изменения, JCP позволяет создавать («инициализировать») запросы спецификаций Java (JSR). Это делается через стандартную форму. Чтобы получить доступ к форме, вы должны зарегистрировать бесплатную учетную запись JCP.

Оттуда многие изменения, небольшие или нет, происходят в технологиях Java, которые мы используем каждый день. Когда поступает JSR, он вступает в процесс проверки JSR. Это многоэтапный процесс, в котором изменения, предложенные в JSR, постепенно рассматриваются более серьезно, модифицируются и в конечном итоге принимаются или прекращаются.

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.