RuntimeMXBean.getName() 在 Mac OS X Sierra 上挂起 - 如何修复?
RuntimeMXBean.getName() hangs on Mac OS X Sierra - how to fix?
如果我 运行 在 OS X Sierra (JDK 8u111) 上执行以下操作,运行 需要 5 秒(与 [= 上的毫秒相反) 24=]):
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());
}
}
这导致我使用的库速度大幅下降,其较新版本调用了这一点管理 API。我的第一个想法是这是一个 DNS 问题(计算机位于本地家庭 NAT 上)但我尝试在 shell returns 一个 (NXDOMAIN) 答案中解析我的本地主机名或我的本地 IP 地址即刻。 运行 Java 过程中的 dtruss 在 5 秒滞后期间不断重复这些行:
782/0x36f5: psynch_cvwait(0x7FEE4170B968, 0x20100000300, 0x200) = -1 Err#316
782/0x36f5: gettimeofday(0x7000039B4938, 0x0, 0x0) = 0 0
这是怎么回事,我该怎么做才能解除这个瓶颈?
我通过手动将 HostName 设置为 LocalHostName 来解决问题,在此之前,没有设置 HostName:
$ scutil --set HostName $(scutil --get LocalHostName)
如果我 运行 在 OS X Sierra (JDK 8u111) 上执行以下操作,运行 需要 5 秒(与 [= 上的毫秒相反) 24=]):
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());
}
}
这导致我使用的库速度大幅下降,其较新版本调用了这一点管理 API。我的第一个想法是这是一个 DNS 问题(计算机位于本地家庭 NAT 上)但我尝试在 shell returns 一个 (NXDOMAIN) 答案中解析我的本地主机名或我的本地 IP 地址即刻。 运行 Java 过程中的 dtruss 在 5 秒滞后期间不断重复这些行:
782/0x36f5: psynch_cvwait(0x7FEE4170B968, 0x20100000300, 0x200) = -1 Err#316
782/0x36f5: gettimeofday(0x7000039B4938, 0x0, 0x0) = 0 0
这是怎么回事,我该怎么做才能解除这个瓶颈?
我通过手动将 HostName 设置为 LocalHostName 来解决问题,在此之前,没有设置 HostName:
$ scutil --set HostName $(scutil --get LocalHostName)