Java代码如何获得在它运行的JVM的唯一标识符?在Unix系统中,我正在寻找一个例子是在JVM运行(假设JVM的和流程之间的一个一对一的映射)进程的PID。创建用于每个JVM的唯一ID的如何获取唯一的JVM标识符?
9
A
回答
9
一个简单的方法是启动一个静态的ServerSocket,设置为使用端口0时其将抓取任何空闲端口。由于在同一个端口上不能存在两个ServerSocket(JVM或其他),它们都将是唯一的,您可以查询它的端口号。由于它是静态的,每个JVM只会有一个。
这并不取决于什么权限有,但在大多数情况下它工作得很好,你可以随时把它绑定到“127.0.0.1”,使其不太可能碰到的任何限制。
static ServerSocket myssock;
static int myid;
static {
myssock = new ServerSocket(0);
myid = myssock.getLocalPort();
}
如果你有多个主机上的多个JVM,那么你可以结合以上机器的LAN IP创建跨网络的唯一JVM ID。
2
我们一直在使用:
import java.lang.management.ManagementFactory;
String jvmName = ManagementFactory.getRuntimeMXBean().getName();
其中给出像<pid>@<hostname>
,至少在太阳/ Oracle的JVM上。
相关问题
- 1. 用唯一标识符获取NSManagedObject?
- 2. 如何在Mysql中获取列的唯一标识符和组的唯一标识符?
- 3. 如何获取计算机的唯一标识符?
- 4. 如何使用Phonegap获取iPhone的唯一标识符(UDID)?
- 5. 如何获取唯一的方法标识符?
- 6. 如何从应用程序获取iOS的唯一标识符?
- 7. 如何获取窗口的唯一标识符?
- 8. 如何在iphone中获取唯一标识符
- 9. 如何从网站获取iPad唯一标识符
- 10. 如何从OpenID/Google获取唯一标识符?
- 11. 唯一标识符
- 12. YouTube的唯一标识符
- 13. PC的唯一标识符
- 14. Mac的唯一标识符?
- 15. NSManagedObject的唯一标识符
- 16. SlideMaster的唯一标识符
- 17. 在列表中获取唯一标识
- 18. 从窗口获取唯一标识
- 19. 获取并更改项目的唯一标识(最短标识)
- 20. 如何获得唯一的线程标识符?
- 21. 如何获得geofence在离子中的唯一标识符?
- 22. 如何获得协议对象的唯一标识符
- 23. 从GMail URL中获取唯一的电子邮件标识符
- 24. 在Express.js中获取JWT令牌的唯一用户标识符
- 25. 在iOS中获取beacon的唯一标识符?
- 26. 获取系统的唯一标识符(不是MAC地址)?
- 27. 在C#中获取唯一的系统标识符
- 28. 获取R中唯一标识符的平均值
- 29. 流畅的NHibernate获取视图没有唯一标识符
- 30. 基于唯一标识符获取1行上的值
见http://stackoverflow.com/questions/35842/process-id-in-java用于从当前Java进程获得进程ID的详细信息。 [这篇博客](http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html)也有一些好消息。 – prunge