2017-01-06 12 views
6

Wenn ich folgendes auf OS X Sierra (JDK 8u111) laufen, dauert es 5 Sekunden zu laufen (im Gegensatz zu Millisekunden auf zB Linux gegen):RuntimeMXBean.getName() hängt auf Mac OS X Sierra - wie zu beheben?

import java.lang.management.ManagementFactory; 
import java.lang.management.RuntimeMXBean; 

public class BeanTest { 
    public static void main (String[] args) { 
     RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); 
     System.out.println(bean.getName()); 
    } 
} 

Dies verursacht eine massive Verlangsamung einer Bibliothek, die ich verwenden, deren neuere Versionen dieses Bit der Management-API nennen. Mein erster Gedanke ist, dass es ein DNS-Problem ist (der Computer ist auf einem lokalen Heim-NAT), aber mein Versuch, entweder meinen lokalen Hostnamen oder meine lokale IP-Adresse in der Shell aufzulösen, gibt sofort eine (NXDOMAIN) Antwort zurück. Laufen dtruss auf der Java-Prozess erzeugt ständige Wiederholung dieser Zeilen für die Dauer der 5 Sekunden Verzögerung:

782/0x36f5: psynch_cvwait(0x7FEE4170B968, 0x20100000300, 0x200)  = -1 Err#316 
    782/0x36f5: gettimeofday(0x7000039B4938, 0x0, 0x0)  = 0 0 

Was hier vor sich geht und was kann ich tun, um diesen Engpass zu entsperren?

+1

ich das gleiche Problem haben. Wer weiß warum? – James

+0

Gleiches Problem mit JDK 8u131 ... – cloudycliff

Antwort

0

ich das Problem beheben, indem Sie manuell eingestellt Host-Name auf Local vor diesem, Host-Name nicht gesetzt ist:

$ scutil --set HostName $(scutil --get LocalHostName)