jdk只有一个java进程_JDK 10:从Java访问Java应用程序的进程ID
jdk只有一個java進程
StackOverflow.com上一個普遍的問題是:“ Java程序如何獲得自己的進程ID? 與該問題相關的幾個答案包括解析ManagementFactory返回的String 。 getRuntimeMXBean() 。 getName() [但是可以提供“任意字符串”],使用ProcessHandle 。 getPid() [ JEP 102 ],使用Java Native Access (JNA),使用系統信息收集和報告程序 (SIGAR),使用JavaSysMon ,使用Java Native Runtime – POSIX ,通過調用Runtime來解析jps (或jcmd )的結果。 getRuntime() 。 exec(String)和其他方法。 JDK 10可能引入了最簡單的方法,即通過RuntimeMXBean上的新方法來獲取JVM進程的PID。
JDK-8189091 (“ MBean對PID的訪問”)引入了RuntimeMXBean方法getPid ()作為JDK 10的默認接口方法 。 該問題指出 “問題”為:“平臺MBean不提供任何API來獲取正在運行的JVM的進程ID。 一些JMX工具依賴于RuntimeMXBean :: getName的熱點實現,該實現返回<pid> @ <主機名>。” 該問題還提供了“解決方案”:“引入了新的API java.lang.management.RuntimeMXBean.getPid ,以便JMX工具可以直接獲取進程ID,而不必依賴于實現細節RuntimeMXBean#getName().split("@")[0] 。”
下一個代碼清單是一個簡單的清單,它演示了如何在RuntimeMXBean上使用此新的RuntimeMXBean getPid()方法。
使用JDK 10的RuntimeMXBean.getPid()
final RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); final long pid = runtime.getPid(); final Console console = System.console(); out.println("Process ID is '" + pid + "' Press <ENTER> to continue."); console.readLine();當上面的代碼包含在可執行的main(String[])函數中并且從命令行執行該函數時,輸出如下面的屏幕快照所示(該屏幕快照還包括一個單獨的終端,用于驗證PID是否正確)通過jcmd)。
進程ID的long ,因此無需解析“任意字符串”。 這種方法也不需要第三方庫或復雜的代碼來確定當前Java進程的標識符。
這篇文章簡要介紹了Java應用程序(用JDK 10或更高版本編寫)確定自己的基礎進程ID的最簡單方法。
翻譯自: https://www.javacodegeeks.com/2018/02/jdk-10-accessing-java-applications-process-id-java.html
jdk只有一個java進程
總結
以上是生活随笔為你收集整理的jdk只有一个java进程_JDK 10:从Java访问Java应用程序的进程ID的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想的电脑系统叫什么(联想电脑系统有哪些
- 下一篇: 联通中兴机顶盒设置(联通中兴机顶盒设置方