JVMのガベージコレクションは唯一知っていますか?その後のアウト!:JVMTIデバッグインターフェース、状態監視インターフェース

参考:

ここに画像を挿入説明

JVMTIのシナリオ

  1. class ファイルの暗号化

    • いくつかの従来の手段を用いて
      容易に逆コンパイルすることができるクラスファイルを暗号化するために(例えば、錯乱またはカスタムクラスローダを使用して)。逆コンパイルコードより困難が読みますが、だけでなく、読むためにいくつかの努力を取ることができます。
    • 使用JVMTIの
      コードは、私たちが解読できるにカプセル化される.dllか、.soファイル。
      あなたはそれを逆コンパイルするファイルは、トラブルに他の缶パッカーです。
  2. パフォーマンス監視(アプリケーション・パフォーマンス管理、APM)、診断(プロファイル)

    1. 分散アーキテクチャとマイクロベースのサービスの監視と運用・保守にもたらした課題に対処するためのAPMのJVMTI。
      オープンソースピンポイント、ZipKin、Hawkular、商用AppDynamics、OneAPM、GoogleのDapperの選手は1ですべてです。
    2. CPU使用率へのエイブルが高すぎる、など診断など、スレッドのデッドロックの問題
      など、オープンソースのJavaアリババ診断ツールとしてArthasは
      それが動的に表示したり、チェーン上のメソッド呼び出しの前に、切片に時間のかかる方法の後に変数統計の値を変更することができ、印刷パラメータと戻り値、および例外情報、
  3. JAVAプログラムのデバッグ(デバッグ)[開発者、最も実用的!]

    これは、デバッグするための開発ツールの原理であります
    JVMTIデバッガorg.eclipse.jdt.debug基礎となるEclipseプラグインを達成するために呼び出されたよう
    分散、サービス提供のためのマイクロ同時に、リモートデバッグ可能!
    グーグルでも、ツールクラウドデバッガをデバッグするクラウドを立ち上げました。
    これは、Webアプリケーションを作る、それが生産環境を指示することができますリモートデバッグ再起動やサービスを中断することなく。
    アリは、同様のツールZdebuggerを持っています。

  4. 熱負荷

    熱い展開の原理

JVMTI - JVMツールインターフェイス

Java仮想マシン ツール・インタフェース(JVMTI、JVMツールインタフェース)

比喩的に言って
JVMTIが提供するJava仮想マシンのセットですバックドア
仮想マシンのすべての側面は、バックドアを通って設定することができます監視、分析
さえ介入実行する仮想マシン

以前として知られています

  • 仮想マシンのデバッグインタフェース(Java仮想マシンDebug・インターフェース、JVMDI)
  • 仮想マシンのパフォーマンス・デバッグ・インタフェース(Java仮想マシンProfiler・インターフェース、JVMPI)

(2005年)J2SE 5.0後JDKはJVMDIインターフェースの二組とJVMPIを置き換え

JVMDIは、もはや最新のJava SE 6ではサポートされていない、とも完全にJava SEの後JVMPI 7を交換する計画。

JPDA - Javaプラットフォームデバッガアーキテクチャ

理解するために進む前に、まず理解する必要があります Javaプラットフォームデバッガシステム(Javaプラットフォームデバッガアーキテクチャ、JPDA)

ここに画像を挿入説明

JPDAは、達成するために3層に抽象化されます

  • どのJVMTIJVMです对外暴露的接口
  • JDI これは、JDWPを達成することです 通信协议的客户端
  • 调试器 これは、通信JDIデバッガとJVMを介して行われます。

自然のJVMTI

JVMTIは、基本的にポイントがJVM内部の多くのイベントに埋葬されたあります現在のコンテキストは、埋め込みポイントを介して外部に情報を提供することができます。でも、あなたは次のアクションを変更するには、外部コマンドを受け入れることができます。

  • 外部プログラムは、一般的に実装するC / C ++を使用してJVMTIAgent、エージェントの一部の内側に登録しますJVM事件的回调
  • イベントが発生するとJVMTIは、それらを呼び出します回调方法
  • エージェントのコールバックメソッドは、内部に実装することができます自己的逻辑
    その中でも、JVMTIAgentがされ动态链接库た仮想マシンの形でロードされています

JVMTIの状態

全体JPDAシステムの底部にJVMTI、JVMTIに自然の必要性によって提供されるすべてのデバッグ機能

  • 広い意味では、
    JVMTIインタフェースをデバッグするために使用され、プロファイラすることができる提供し、
    同時に、Java(登録商標)5/6で、仮想マシンインターフェースは、モニター(監視)、スレッド分析(スレッド分析)およびカバレッジ分析(カバレッジ分析を増加させます)およびその他の機能。

  • 小宇宙では
    、仮想マシンのスレッド、メモリ、スタック、スタック、クラス、メソッド、変数、イベント、タイマ処理、および他の多くの機能が含まれています。

具体的な参考資料オラクル:
「JVMTMツール・インタフェース」https://docs.oracle.com/javase/1.5.0/docs/guide/jvmti/jvmti.html

これらのインタフェースを通じて、開発者はJavaプログラムを実行するだけでなく、仮想マシン上でデバッグするだけでなく、その動作の状況、設定したコールバック関数、最適化アプリケーションのパフォーマンスに特定の環境変数のコントロールを表示することができます。

JVMTIの実装

JVMTIは、必ずしもすべての異なる仮想マシンが同じではありません達成するために、Java仮想マシン上で実装されていません。しかし、そのような日やIBMだけでなく、オープンソースのApacheハーモニーDRLVMの一部として、いくつかの主流の仮想マシンで、標準ではJVMTIの実装を提供します。

公開された501元の記事 ウォンの賞賛112 ・は 20000 +を見て

おすすめ

転載: blog.csdn.net/LawssssCat/article/details/105003693