В моей системе windows имя содержит PID и имя хоста моего ноутбука (например, "14576@DESKTOP-LEOJCPM"). Если вы хотите положиться на имя хоста операционной системы, это должно работать. Но каждая JVM может вести себя по-разному.
См. Api docs: "Возвращает имя, представляющее работающую виртуальную машину Java. Возвращенная строка имени может быть любой произвольной строкой, и реализация виртуальной машины Java может выбрать вставьте указанную платформу c полезную информацию в возвращаемую строку имени. У каждой работающей виртуальной машины может быть свое имя. "
Ref: 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