問題タブ [jvmti]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java JVMTI が -Xdebug -Xrunjdwp と一緒に動作しない
この 4 時間は、リモートで (つまり、Eclipse ではなく) 実行する必要がある Tomcat インスタンスで Eclipse TPTP メモリ プロファイリングをセットアップするのに費やしました。TPTP および Agent Controller のドキュメントによると、これは可能なはずです。
Web サイトの指示に従って、エージェント コントローラーと共に TPTP コンポーネント (4.6.0) を Eclipse (Galileo) ワークベンチにインストールしました。エージェントを有効にするために、Tomcat インスタンスを起動するコマンド ラインに次のオプションを追加しました。
次のディレクトリを PATH の先頭に追加しました。
Tomcat を起動しようとすると、一貫して次のエラー メッセージが表示されます。
私は多くのグーグルを行いましたが、関連するものは何も見つかりませんでした。TPTP とさまざまなバージョンの Agent Controller を再インストールしてみました。
最終的に、問題は、「jpda」オプションを使用してTomcatを起動していたことであることが判明しました。これは、catalina.batが変換します
「jpda」コマンド引数を削除すると、JVMTI が機能し始めました。
SO、質問は次のとおりです。検索中に、JVMTI エージェントがデバッグと互換性がないことを示すものは何も見つかりませんでした。誰かが何が起こっているのか、なぜ JVMTI + JDWP が有効なセットアップではないのか説明できますか?
java - Javaランタイム管理者としての役割などはありますか?
データベース管理者(DBA)とUnix|Windowsシステム管理者がいます。間もなくクラウド管理者が登場する可能性があります。
さまざまなスタック上またはスタック内で実行されている多数の大規模システムJVMの管理と管理を担当する「管理者」の大群がいますが、JVMとは何かを実際に理解し、監視している少数の人に正直に会いました。計測、測定、およびチューニング。大規模な組織では、Oracleインスタンスの管理を担当するWindows管理者を採用していますか?それでも、世界中の企業や公共部門は、システム管理者が同じ不透明度でJVMを管理することを期待しています。
Javaランタイム管理者の有効な運用上の役割はありますか?
java - JDWP と JVMTI を使用して、実行中の Java アプリケーションの情報を取得する
JDWP と JVMTI を使用して、実行中の Java アプリケーションの情報を取得するアプリケーションを開発しています。Sun Java には JDWP のリファレンス実装が付属しているため、agentlib -jdwp: を使用するとリファレンス実装が使用されます。私たちの目的は、JVMTI を研究し、JVMTI エージェントを作成して特定の詳細を取得することです。また、ユーザーが実行中の Java アプリケーションに関する特定の情報を要求できるフロント エンドを作成します。このためには、JDWP の実装を作成する必要があります。JVMTI エージェントを作成し、それを使用してコマンド ラインから Java アプリケーションにアタッチすることはできましたが。しかし、私たちの目的は、この情報を別の Java プロセス (フロント エンド) に送信することです。
したがって、JVMTI エージェント (バックエンド) からの情報を照会するフロント エンドの Java アプリケーションがあります。これらのエージェントは、動的に検査する実行中の Java アプリケーションに接続できる必要があります。これを行う方法についてのアイデアはありますか?または、誰かがこれを以前に試したことがありますか?
java - ライブ段階での VM での JVM Tool Interface エージェントの開始
JVM Tool Interface (JVMTI)仕様では、JVMTI エージェントはライブ フェーズ中に VM で起動できると記載されていますが、その方法については言及されていません。誰かがこれを以前に試したことがありますか、それを行う方法について何かヒントを得ましたか?
java - Java: JVMTI の ForceGargabeCollection を使用して GC を実際に強制するにはどうすればよいですか?
私は通常の「System.gc()を使用してJavaでGCをヒントすることしかできません」という答えを探しているわけではありません。これは、この質問の内容ではありません。
私の質問は主観的なものではなく、現実に基づいています。事実として、Java で GC を強制することができます。IntelliJ IDEA、NetBeans、VisualVM など、私たちが日常的に使用する多くのプログラムがそれを行っています。
それらはすべて、GC を強制的に発生させることができます。
それはどのように行われますか?
それらはすべてJVMTI、より具体的にはForceGarbageCollection(「Force」に注意してください)を使用していると思いますが、どうすれば自分で試すことができますか?
http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection
また、この質問は、私がこれをやりたいと思う「理由」に関するものではないことに注意してください。「理由」は、「好奇心」または「VisualVM に似たプログラムを書いている」などの可能性があります。
問題は、「JVMTI の ForceGarbageCollection を使用して GC を強制する方法」です。
JVM を特別なパラメーターで起動する必要がありますか?
JNI は必要ですか? もしそうなら、正確にはどのコードですか?
Sun VM でのみ動作しますか?
完全でコンパイル可能な例は大歓迎です。
java - Java アプリケーションが実行を開始したときに生成されるこれらのスレッドは何ですか?
JFrame といくつかの JButton を持つ単純な Java アプリケーションを作成しました。JVMTI を使用して Java アプリケーションを検査しようとすると、明示的なスレッドを作成していないにもかかわらず、多数のスレッドが生成されていることがわかりました。
次のスレッドを見つけることができました。
- DestroyJavaVM
- AWT-EventQueue-0
- AWT-シャットダウン
- AWT-XAWT- デーモンスレッド
- Java2D Disposer - デーモンスレッド
- Thread-0 - デーモン スレッド [JVMTI エージェントによって作成される]
- シグナルディスパッチャー - デーモンスレッド
- ファイナライズ - デーモン スレッド
- 参照ハンドラ - デーモン スレッド
それらのほとんどは Runnable 状態でした。誰かがこれらのスレッドの機能を教えてもらえますか?
java - JNI メソッド内から JVM を作成する
JNI API を使用して JNI メソッド内から JVM を作成することは可能ですか?
JNI 関数「JNI_CreateJavaVM()」を使用してこれを実行しようとしましたが、機能しません (関数はゼロ未満の値を返し続けます)。
これが私が使用している基本的なコードです(C++):
USER_CLASSPATH には、ロードするクラスへのパスが含まれています。上記のコードの実行後、 res < 0 となり、JNI_CreateJavaVM() が失敗したことを示します。上記のコードは、Java から呼び出される C++ で記述されたネイティブ メソッドの一部です。これを機能させる方法についてのアイデアはありますか?
ありがとう。
java - JVMTI:FollowReferences:ソフト/ウィーク/ファントム参照をスキップする方法は?
ツールで特定のアクションを実行した後に残されたオブジェクトの数を検出するための小さなコードを書いています。これはFollowReferences()
JVMTIAPIから使用します。これにより、すべてのパスが到達可能なインスタンスがカウントされます。ウィーク/ソフト/ファントム参照を含むパスをスキップするにはどうすればよいですか?
(IterateThroughHeap()
現時点ですべてのオブジェクトをカウントするため、数は完全には信頼できません。)
java - Javaエージェント、JVMTIなどを検出する方法
制御していないマシンで実行している場合、Java環境をどのように保護しますか?誰かがJavaエージェントまたはネイティブJVMTIエージェントを作成し、バイトコードをダンプしたり、クラスを書き直してライセンスやその他のセキュリティチェックをバイパスしたりするのを防ぐにはどうすればよいですか?Javaコードから実行されているエージェントがあるかどうかを検出する方法はありますか?JNIから?JVMTIエージェントから?
java - MethodEntry コールバックでパラメーター値を取得する方法
次のJavaコードがあります
関数呼び出しをキャッチする Java に接続された jvmti エージェントがあります。メソッドに渡されたパラメータ値を取得したい (例: "Bonjour")
コールバック自体には、スレッドとメソッド ID があります。
jvmti.h ヘッダーを調べると、パラメーターを処理するこの構造のみが見つかりましたが、値はありません。
コールバックからパラメータ値を取得するにはどうすればよいですか?