OpenJDK は、非同期 API スタック トレース VM を含めることを検討しています。 

OpenJDK

OpenJDK は、オブジェクト指向言語の概念に基づく無料バージョンの Java 開発プラットフォームです。

最近 Java で非同期スタック トレースを促進するための提案がリリースされました そして、それは OpenJDK の Java 拡張プロセスで成功しています。 このプロジェクトは、AsyncGetStackTrace API を定義してスタック トレースを非同期的に収集し、Java およびネイティブ スタック フレームワークに関するデータを含めることを目的としています。

提案によると、 API が使用されていない場合、パフォーマンスは影響を受けません。 また、既存の AsyncGetCallTrace API と比較して、メモリ要件が大幅に増加することはありません。 新しい API は、JVM をクラッシュさせる可能性があるため、本番環境での使用はお勧めしません。 計画には、広範なテストと検証を通じて、このようなインシデントのリスクを最小限に抑えることが含まれます。

AsyncGetCallTrace は、ほとんどのジェネレーターで使用されます async-profiler を含む、オープンソースと商用の両方で利用可能なプロファイルの数。 しかし、それにはXNUMXつの大きな欠点があります。

  1. これは内部 API であり、どのヘッダーにもエクスポートされません。
  2. Java フレームに関する情報、つまりメソッドとバイトコードのインデックスのみを返します。

これらの問題により、プロファイラーと関連ツールの実装が困難になります。 複雑なコードを使用して HotSpot VM から追加情報を抽出できますが、その他の有用な情報は隠され、取得することはできません。

コンパイルされた Java フレームワークがオンラインかどうか (現在、より高度にコンパイルされたフレームワークでのみ取得可能)。

Java フレームワークのビルド レベル (つまり、C1 または C2 によってコンパイルされたもの)。
スタックの最上位にない C/C++ フレームワークに関する情報。

これらの日付 仮想マシンのプロファイリングとチューニングを行う場合に役立ちます 特定のアプリケーション、および多くの JNI を使用するコードをプロファイリングする場合。

API は APIAsyncGetCallTrace をモデルにしており、 また、新しい API は、Java 標準の特定のバージョンに対してまだ提供されていません。 Java の次のリリースは (JDK) 20 で、2023 年 XNUMX 月に予定されています。Java にはプラットフォームの変更を組み込むための正式なプロセスがあり、高度な安定性を達成しながら変化する状況に対応することができました。

プロファイラーは、この API を呼び出して、現在実行中のスレッドのスタック トレースを取得できます。 この API をシグナル ハンドラーから呼び出すことは安全であり、新しい実装は少なくとも JFR スタック トレース コードと同じくらい安定しています。 仮想マシンは、フレーム情報とフレーム カウントを入力します。 API 呼び出し元は、要求されたスタックの深さに十分なメモリを呼び出し配列に割り当てる必要があります。

仮想マシンは、イメージ配列内の実際のイメージ数またはエラー コードを含むトレース構造を完了します。 エラー コードは、AsyncGetCallTrace のエラー コードのサブセットです。

API はより多くの情報を提供しますが、フレームごとに必要なスペース (x16 では 86 バイトなど) は、既存の APIAsyncGetCallTrace と同じです。 C/C++ フレームワークに関する情報を返すと、実装の詳細が開示されますが、標準ライブラリ ファイルの実装の詳細が明らかになり、ネイティブ ラッパー フレームワークが含まれているため、これは AsyncGetCallTrace Java フレームワークにも当てはまります。

さえ 経験豊富な Java 開発者は、よく理解していない可能性があります。 プラットフォームがどのように開発および維持されているか。 学ぶべき主な教訓は、これは真に開かれたプロセスであるということです。

Java 開発の基礎は、Java Community Process (JCP) です。 これは、プラットフォームに変更を導入する方法を定義し、プロセス自体を変更できるようにする、一種の自己認識型の基本的なドキュメントです。 JCP の最新バージョンは 2.11 で、2019 年に採用されました。

JCP は、Java の新機能と変更を提案、レビュー、および承認する方法を形式化しています。 (つまり、技術仕様) には、人々が果たすことができるさまざまな役割の定義が含まれます。 これらの役割は、Java ユーザー コミュニティがプラットフォームのガバナンスに参加できる場所を提供するのに役立ちます。

新しい機能と変更を提案するために、JCP では Java Specification Request (JSR) の作成 (「初期化」) が可能です。 これは、標準化された形式で行われます。 フォームにアクセスするには、無料の JCP アカウントに登録する必要があります。

そこから、私たちが日常的に使用している Java テクノロジに、小さいかどうかにかかわらず多くの変更が加えられます。 JSR が到着すると、JSR レビュー プロセスに入ります。 これは、JSR で提案された変更が徐々に真剣に検討され、修正され、最終的に採用または中止される多段階のプロセスです。

最後に あなたがそれについてもっと知りたいなら、詳細を確認できます 次のリンクで。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。