首頁 > Java > java教程 > 為什麼在遇到套接字錯誤時對 jmap 使用「-F」選項?

為什麼在遇到套接字錯誤時對 jmap 使用「-F」選項?

Mary-Kate Olsen
發布: 2024-11-07 21:49:02
原創
422 人瀏覽過

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. 連接到套接字,傳送 dumpheap 指令,並從 JVM 的 AttachListener 執行緒接收輸出。

動態附加的優點和缺點:

  • 優點:

      由JVM 執行的高速堆轉儲。
    • 不同版本的 jmap 與 JVM 之間的相容性。
  • 缺點:

      僅限於與目標 JVM 相同的使用者 (euid/egid)。

jmap '-F' 模式:利用HotSpot 可維護性代理

或者,jmap '-F' 使用HotSpot維護性代理,提供單獨的操作模式。在這種情況下,會發生以下步驟:

    在目標 JVM 上呼叫 PTRACE_ATTACH,並使用 SIGSTOP 訊號無條件掛起進程。
  1. 使用進程 PTRACE_PEEKDATA 讀取 JVM 記憶體由於需要一次讀取一個單詞,速度明顯較慢。
  2. JVM 內部結構是根據目標 JVM 版本重建的。
  3. 工具在復原之前產生堆轉儲目標進程。

「-F」模式的優點和缺點:

  • 優點:

    • 優點:
    • 優點:
  • 優點:

    • 優點:
    • 優點:
  • JVM 配合。
甚至可以應用在掛起的進程。 特權使用者(例如 root)可以轉儲其他使用者的進程。 缺點:大堆速度慢。 需要匹配版本的 jmap 和目標 JVM。 不保證安全點,可能會導致目標 JVM 狀態不一致。

以上是為什麼在遇到套接字錯誤時對 jmap 使用「-F」選項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板