OpenJDK zvažuje zahrnutí asynchronního API Stack Trace VM 

OpenJDK

OpenJDK je bezplatná verze vývojové platformy Java pod konceptem objektově orientovaného jazyka.

Nedávno byl vydán návrh na podporu asynchronního trasování zásobníku v Javě a že se mu daří v procesu vylepšování Java OpenJDK. Projekt je určen k definování rozhraní API AsyncGetStackTrace pro asynchronní sběr trasování zásobníku a zahrnutí dat o Javě a nativních rámcích zásobníku.

Podle návrhu výkon nebude ovlivněn, když se rozhraní API nepoužívá a požadavky na paměť by se výrazně nezvýšily ve srovnání se stávajícím API AsyncGetCallTrace. Nové API by nebylo doporučeno pro produkční použití, protože by mohlo způsobit selhání JVM. Plány zahrnují minimalizaci rizik takového incidentu prostřednictvím rozsáhlého testování a ověřování.

AsyncGetCallTrace používá většina generátorů dostupných profilů, open source i komerčních, včetně async-profiler. Má to ale dvě velké nevýhody.

  1. toto je interní API, neexportované v žádných hlavičkách;
  2. vrací pouze informace o rámcích Java, tedy jejich metodu a indexy bytecode.

Tyto problémy ztěžují implementaci profilovačů a souvisejících nástrojů. Přestože lze z virtuálního počítače HotSpot extrahovat další informace pomocí složitého kódu, další užitečné informace jsou skryté a nelze je získat:

Zda je kompilovaný rámec Java online (v současnosti lze získat pouze pro vyšší kompilované rámce).

Úroveň sestavení rámce Java (tj. zkompilovaný pomocí C1 nebo C2).
Informace o frameworkech C/C++, které nejsou na vrcholu zásobníku.

Tato data může být užitečné při profilování a ladění virtuálního stroje pro danou aplikaci a také při profilování kódu, který využívá hodně JNI.

API by bylo modelováno na APIAsyncGetCallTrace, Také nové API zatím nebylo nabídnuto pro konkrétní verzi standardu Java. Příští vydání Java je (JDK) 20, které se očekává v březnu 2023. Java má formální proces pro začlenění změn platformy, který dokázal reagovat na měnící se okolnosti a zároveň dosáhnout vysokého stupně stability.

Profileři mohou volat toto rozhraní API, aby získali trasování zásobníku pro aktuálně spouštěné vlákno. Volání tohoto API z obslužného programu signálu je bezpečné a nová implementace bude přinejmenším stejně stabilní jako trasovací kód zásobníku JFR. Virtuální počítač vyplní informace o rámci a počet snímků. Volající API musí přidělit poli volání dostatek paměti pro požadovanou hloubku zásobníku.

Virtuální počítač dokončí strukturu trasování, která obsahuje skutečný počet obrázků v poli obrázků nebo kód chyby. Chybové kódy jsou podmnožinou chybových kódů pro AsyncGetCallTrace.

Přestože rozhraní API poskytuje více informací, požadovaný prostor na snímek (například 16 bajtů na x86) je stejný jako u stávajícího APIAsyncGetCallTrace. Vrácení informací o rámcích C/C++ má za následek zveřejnění podrobností implementace, ale to platí také pro rámce Java AsyncGetCallTrace, protože odhalují podrobnosti implementace souborů standardních knihoven a zahrnují nativní rámce wrapper.

Dokonce zkušený vývojář Java nemusí dobře rozumět jak se platforma vyvíjí a udržuje. Hlavním ponaučením je, že jde skutečně o otevřený proces.

Základem vývoje v Javě je Java Community Process (JCP). Je to jakýsi základní dokument, který si uvědomuje, jak zavádět změny v platformě a také umožňuje modifikovat samotný proces. Nejnovější verze JCP je 2.11, která byla přijata v roce 2019.

JCP formalizuje, jak se navrhují, kontrolují a schvalují nové funkce a změny v Javě. (tj. technické specifikace), včetně definice různých rolí, které mohou lidé zastávat. Tyto role pomáhají poskytovat místo, kde se komunita uživatelů Java může podílet na správě platformy.

Pro navrhování nových funkcí a změn umožňuje JCP vytváření („inicializaci“) požadavků Java Specification Requests (JSR). To se provádí prostřednictvím standardizovaného formuláře. Pro přístup k formuláři se musíte zaregistrovat a vytvořit si bezplatný účet JCP.

Odtud přichází mnoho změn, malých nebo ne, do technologií Java, které používáme každý den. Když JSR dorazí, vstoupí do procesu kontroly JSR. Jde o vícestupňový proces, ve kterém jsou změny navrhované v JSR postupně vážněji zvažovány, upravovány a nakonec přijaty nebo zrušeny.

Konečně pokud máte zájem o tom vědět více, můžete zkontrolovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.