InetAddress.getByName(ipAddress).getLocalHost().getCanonicalHostName();
上面这行代码大约需要 10 秒来执行。
我在 etc\hosts 文件中添加了 IP 和主机名,但仍然没有任何变化。
getCanonicalHostName 如何工作?我可以获得该方法的实现吗?
如何提高这行代码的效率?
最佳答案
在我的例子中,问题是由 Npcap 引起的驱动程序,我用于 Wireshark。在 Windows Control Panel\Network and Internet\Network Connections
中禁用 Npcap Loopback Adapter
修复了我遇到的 9 秒延迟。
延迟本身发生在Inet6AddressImpl.getHostByAddr(byte[] addr)
方法中(由InetAddress.getCanonicalHostName()
调用),这是原生的,所以很难说出与 DNS 相关的其他情况。
关于java - getCanonicalHostName 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031687/