JDK 10:从Java访问Java应用程序的进程ID
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 10:从Java访问Java应用程序的进程ID相关推荐
- jdk只有一个java进程_JDK 10:从Java访问Java应用程序的进程ID
jdk只有一个java进程 StackOverflow.com上一个普遍的问题是:" Java程序如何获得自己的进程ID? 与该问题相关的几个答案包括解析ManagementFactory返 ...
- Java的知识点25——程序、进程与线程 || 线程的创建和启动
程序.进程与线程 进程的特点:动态性.并发性.独立性 并发和并行的区别 并发:多个CPU同时执行多个任务 并行:一个CPU(采用时间片)同时执行多个任务 注:很多多线程是模拟出来的,真正的多线程是指有 ...
- java中bash应用_在bash脚本中查找java应用程序的进程ID(以查看目标应用程序是否已在运行)...
我知道获取进程ID有一百万个问题,但这个问题似乎是独一无二的.谷歌没有给我答案,所以我希望stackexhange会帮助而不是关闭这个问题. 当涉及Java时,找到进程ID似乎比较棘手(pgrep不起 ...
- 诚之和:在 Linux 和 Windows 中快速找到 Java 应用程序进程 ID
在这篇文章中,我们将讨论如何快速找到您的 Java 应用程序进程 ID.对于某些监控工具(如yCrash ),您需要将应用程序进程 ID 作为输入传递.如果您想查找包含多个不同选项的更详细的帖子来 ...
- JDK 10 的 109 项新特性
来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10 虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的 ...
- pgrep java是什么意思_pgrep查找正在运行的进程ID
pgrep是一个命令行实用程序,根据给定的条件查找正在运行的程序的进程id.它可以是完整的或部分的进程名.运行该进程的用户或其他属性. 如何使用pgrep命令 语法: pgrep [options] ...
- linux java jdk_神级程序员教你如何10分钟在Linux上安装java的JDK?
在开始下载安装之前,我们先做几个准备工作: 检查系统是否安装了java并显示版本: # java -version 使用以上命令可以显示,如果说找不到即没有安装,可以使用: # sudo apt-ge ...
- Java JDK 10会有什么期望
由于我们刚刚习惯于9月发布的Java 9,因此距离下一代Java的发布只有几个月的时间了. 就在本月,计划中的Java Development Kit 10升级已进入开发的主要减速阶段. 在第一个初始 ...
- Java JDK 10:下一代 Java 有哪些新特性?
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 工欲善其事,必先利其器.作为老牌军 Java 在发行二十多年的今天,战胜了 C 和 C++, ...
最新文章
- 原生JS修改html内容不影响绑定的点击事件 请认准insertAdjacentHTML、insertAdjacentText方法
- jquery php 抽奖,jquery实现抽奖系统
- 网页设计千千万,网站建设万万千
- 采购订单检查/保存BADI使用
- 寄存器分配图着色_寄存器分配
- hdoj 1247 Hat’s Words(字典树)
- matlab save txt 乱码,matlab代码或中文复制到word就变成乱码怎么办?
- Google是否投资你,得看AI支持不支持
- python入门基础2 if语句 while循环 for循环
- 【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
- 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_3 配置解决中文乱码的过滤器
- codeblocks 16.01 汉化包下载地址及方法
- 微信小程序的在线学习每日签到打卡 项目源码介绍
- 解读《美国国家BIM标准》– BIM能力成熟度模型(十一)
- PHP中用while的用法,php while语句的用法
- ewebeditor 3.8php漏洞,eWebEditor v3.8 列目录漏洞【asp版本】
- postman支持https、安卓抓包
- 测试开发知识总结(一)
- SHELL脚本下获取文件时间转换时间戳,使用时间戳计算日期差
- SimulinkSTM32开发(一)开发环境搭建