macos - RuntimeMXBean.getName() 在 Mac OS X Sierra 上挂起 - 如何修复?

标签 macos java

如果我在 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

这是怎么回事,我该怎么做才能解除这个瓶颈?

最佳答案

我通过手动将 HostName 设置为 LocalHostName 来解决问题,在此之前,没有设置 HostName:

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

关于macos - RuntimeMXBean.getName() 在 Mac OS X Sierra 上挂起 - 如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512483/

相关文章:

java - java.time.LocalDate 参数在 hibernate 查询中作为 java.util.Date 处理

objective-c - 我可以本地化 cocoa 中动态变化的字符串/文本吗

objective-c - 如何使用 Mac 在 Finder 中的文件夹树前面添加复选框?

macos - 在 Mac OS X 上使用 Doxygen 创建 PDF

java - 为什么这段Java代码在Eclipse中的结构是这样的?

java - 有什么方法可以创建一个通用列表,在其中添加类型和子类型?

objective-c - NSApplescript 不会接受 initWithContentsOfURL

objective-c - 查找 Macintosh 文件的属性

java - Selenium WebDriver 中的 MouseHover 和 Click 事件

java 。根据 WSDL 验证 SOAP 消息