ホームページ > Java > &#&チュートリアル > ソケットエラーが発生したときに jmap で「-F」オプションを使用するのはなぜですか?

ソケットエラーが発生したときに jmap で「-F」オプションを使用するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-07 21:49:02
オリジナル
426 人が閲覧しました

Why use the '-F' option with jmap when encountering a socket error?

ソケット エラーにより jmap を実行できません: 強制接続に '-F' オプションを使用する

ヒープ ダンプを取得しようとしたときjmap を使用すると、「ソケット ファイルを開けません」というエラー メッセージが表示される場合があります。これは、ターゲット プロセスが応答しないか、HotSpot VM がロードされていないことを示唆しています。 「-F」オプションの使用は、この障害を克服する潜在的な解決策として機能します。

jmap と jmap '-F': 独特の動作モード

jmap、 「-F」フラグを指定せずに呼び出すと、ターゲット JVM との通信に動的接続メカニズムを利用します。このメカニズムには、次の一連のステップが含まれます。

  1. ターゲット プロセスの作業ディレクトリ内にファイル (例: .attach_pid1234) を作成します。
  2. ターゲット プロセスに SIGQUIT シグナルを送信し、プロンプトを表示します。 JVM が AttachListener スレッドを開始します。
  3. 外部ツールからコマンドを受信するための UNIX ドメイン ソケットを確立します。
  4. セキュリティ目的で接続ソケットの資格情報 (euid および egid) を検証します。
  5. ソケットへの接続、ダンプヒープ コマンドの送信、JVM の AttachListener スレッドからの出力の受信。

動的アタッチの利点と欠点:

  • 長所:

    • JVM によって共同実行される高速ヒープダンプ。
    • jmap と JVM の異なるバージョン間の互換性。
  • 短所:

    • ターゲット JVM と同じユーザー (euid/egid) に限定されます。

jmap '-F' モード: HotSpot Serviceability Agent の利用

あるいは、jmap '-F' は HotSpot Serviceability Agent を使用して、別の動作モードを提供します。このシナリオでは、次の手順が発生します。

  1. PTRACE_ATTACH がターゲット JVM で呼び出され、SIGSTOP シグナルでプロセスが無条件に一時停止されます。
  2. プロセスの PTRACE_PEEKDATA を使用して JVM メモリが読み取られます。これは、一度に 1 ワードずつ読み取る必要があるため、大幅に遅くなります。
  3. JVM の内部構造は、ターゲット JVM のバージョンに基づいて再構築されます。
  4. ヒープ ダンプは、実行を再開する前にツールによって生成されます。ターゲット プロセス。

「-F」モードの利点と欠点:

  • 長所:

    • ターゲット JVM 連携は不要です。
    • ハングしたプロセスにも適用できます。
    • 特権ユーザー (root など) は、他のユーザーのプロセスをダンプできます。
  • 短所:

    • 大きなヒープでは速度が遅い。
    • jmap とターゲット JVM のバージョンが一致する必要がある。
    • セーフポイントは保証されていないターゲット JVM の状態に不一致が生じる可能性があります。

以上がソケットエラーが発生したときに jmap で「-F」オプションを使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート