簡體   English   中英

任何可能的方法來指定正在運行的 Java 虛擬機的名稱?

[英]Any possible way to specify the name of running java virtual machine?

出於某些特殊目的,我需要使用ManagementFactory.getRuntimeMXBean().getName來做一些特殊的“if 語句”,比如從這個方法返回的 String 值是否包含“Master”或“Slave”。

那么是否可以在啟動java應用程序時指定這個值呢?

在我的 Windows 系統上,名稱包含我的筆記本電腦的 PID 和主機名(例如“14576@DESKTOP-LEOJCPM”)。 如果您想依賴操作系統的主機名,那應該可行。 但是每個 JVM 的行為可能不同。

請參閱 api 文檔:“返回代表正在運行的 Java 虛擬機的名稱。返回的名稱字符串可以是任意字符串,Java 虛擬機實現可以選擇在返回的名稱字符串中嵌入平台特定的有用信息。每個正在運行的虛擬機都可以有一個不同的名字。”

參考: https : //docs.oracle.com/javase/8/docs/api/java/lang/management/RuntimeMXBean.html#getName--

該方法在 Sun VM 中的實現導致 pid 和主機名的串聯:

public String getVmId() {
    int pid = getProcessId();
    String hostname = "localhost";
    try {
        hostname = InetAddress.getLocalHost().getHostName();
    } catch (UnknownHostException e) {
        // ignore
    }
    return pid + "@" + hostname;
}

因此,在不修改類以及 VM 行為的情況下,無法直接更改它。 該方法也用於其他地方。 最好的建議是依賴額外的系統屬性或主機相關配置。

請參閱: http : //www.docjar.com/html/api/sun/management/VMManagementImpl.java.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM