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 執行很慢?】

推薦閱讀