InetAddress.getLocalHost 执行很慢?( 三 )


文章插图
对应的源码可以参考https://codebrowser.dev/glibc/glibc/sysdeps/unix/sysv/linux/ifaddrs.c.html 。
总结本文以 Java 中获取主机名慢的场景为契机 , 使用多种技术手段研究背后的原理,包括使用 Wireshark 抓包 , 使用 Arthas 工具定位到性能瓶颈,再转到 jdk 中查看对应的 native 方法实现,由于没找到最底层调用链路源码,转而参照标准Linux的相关源码 , 简单复现了上述场景 。
进一步地,由于没找到最底层调用链路源码,我们根据现象猜测的本地缓存、重试、超时等机制没有得到验证,有兴趣的同学可以进一步研究探索 。
参考文章

如何查找 jdk 中的 native 实现
从Chrome源码看DNS解析过程
getaddrinfo工作原理分析
浅谈getaddrinfo函数的超时处理机制
【InetAddress.getLocalHost 执行很慢?】

推荐阅读