我運行命令:無法打開套接字文件的原因是什麼:轉儲JVM時進程沒有響應?
jstack 1234 > threadDump.tdump
在一個Java進程的PID。我不斷收到以下消息:
無法打開套接字文件:目標進程不響應或HotSpot虛擬機未加載 可以使用-f選項時,目標進程沒有響應
我不是隻是問如何解決,但我想明白爲什麼我會得到這個信息,因爲我從來沒有得到過。
我在Unix紅帽。
我運行命令:無法打開套接字文件的原因是什麼:轉儲JVM時進程沒有響應?
jstack 1234 > threadDump.tdump
在一個Java進程的PID。我不斷收到以下消息:
無法打開套接字文件:目標進程不響應或HotSpot虛擬機未加載 可以使用-f選項時,目標進程沒有響應
我不是隻是問如何解決,但我想明白爲什麼我會得到這個信息,因爲我從來沒有得到過。
我在Unix紅帽。
這是如何動態連接工作:(你的情況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標誌運行虛擬機?在這種情況下,從您的命令行中刪除此標誌