我有一個進程的進程ID。我可以獲得有關CPU%,內存,exe名稱等進程的其他信息嗎?如何使用pid與Java獲取進程信息?
我已經看到沒有內置函數來獲取所有這些。如何使用Native執行此操作?
請幫忙。
-Ravi
我有一個進程的進程ID。我可以獲得有關CPU%,內存,exe名稱等進程的其他信息嗎?如何使用pid與Java獲取進程信息?
我已經看到沒有內置函數來獲取所有這些。如何使用Native執行此操作?
請幫忙。
-Ravi
好吧,您可以從操作系統獲得所有這些信息。例如,Windows中的任務管理器。
什麼Java可以爲您提供的,例如線程轉儲:
%JAVA_HOME%/bin/jstack.exe PID >stack.txt
或者,堆轉儲:
%JAVA_HOME%/bin/jmap.exe -dump:format=b,file=heap.bin PID
內置到Java沒有API揭露了這對我的知識:
但你可以耦合Java與操作系統本地命令來獲取在FO。
例如
的Windows探索(任務列表):http://msdn.microsoft.com/en-us/library/windows/hardware/ff545415(v=vs.85).aspx
Unix的探索(PS):Shell script to get the process ID on Linux
Java是一種獨立於平臺的平臺。其規範沒有定義任何關於pid的內容。所以你不能找到一個通用/便攜的方式來操縱PID。雖然這不是一個好的做法,但您可以爲特定的平臺進行實施。
在windows上,您可以使用tasklist
來獲取所需PID的完整列表和過濾器。
在Unix/Linux系統上,您可以使用ps ax | grep
來獲取您的信息。
不通過Java API。您將需要一個JNI/JNA(本機)解決方案 – MadProgrammer