2016-07-22 13 views

回答

1

這是如何動態連接工作:(你的情況jstack)工具發送信號(-3)到目標VM。但是在發送信號之前,工具會創建附件文件。當VM收到信號時,它會搜索這個文件。如果文件存在,那麼它將創建unix套接字。同時工具將等待創建這個套接字。如果這個文件不存在,它將打印這個錯誤信息。 你可以在sun.tools.attach.LinuxVirtualMachine找到該代碼(工具部分)。這個文件來自jdk_home/lib/tools.jar文件。 來自os.cpp的熱點部分signal_thread_entry的代碼,AttachListener::init

我認爲,由於某種原因,VM不能在5秒鐘內創建套接字文件(這是默認的超時時間,即可以通過-Dsun.tools.attach.attachTimeout屬性來改變)。或者,也許你用-XX:+ ReduceSignalUsage標誌運行虛擬機?在這種情況下,從您的命令行中刪除此標誌

相關問題