如果我在OS X Sierra(JDK 8u111)上运行以下命令,则需要5秒钟才能运行(而不是像Linux上的毫秒):
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中解析我的本地主机名或我的本地IP地址立即返回(NXDOMAIN)答案。在Java进程上运行dtruss会在5秒滞后期间不断重复这些行:
782/0x36f5: psynch_cvwait(0x7FEE4170B968, 0x20100000300, 0x200) = -1 Err#316
782/0x36f5: gettimeofday(0x7000039B4938, 0x0, 0x0) = 0 0
这里发生了什么,我该怎么做才能解除这个瓶颈?
答案 0 :(得分:0)
我通过手动将HostName设置为LocalHostName来修复此问题,在此之前,未设置HostName:
$ scutil --set HostName $(scutil --get LocalHostName)