![Java 应用程序连接到网络时启动缓慢](https://linux22.com/image/1286025/Java%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%BF%9E%E6%8E%A5%E5%88%B0%E7%BD%91%E7%BB%9C%E6%97%B6%E5%90%AF%E5%8A%A8%E7%BC%93%E6%85%A2.png)
我使用内核为 3.0 的 Arch Linux 和 brcmsmac 来管理无线网卡。我的桌面环境是 KDE 4.7,我使用 networkmanager 来处理网络。最近我遇到了一个奇怪的问题,每当我连接到网络时,Java 应用程序(例如 jEdit)启动时间会延长约 30 秒,但启动后运行正常。这可能是什么原因造成的?我该如何解决?
编辑:此问题同时出现在 Oracle 的 JRE 和 OpenJDK 上,两个版本均为 1.7。我使用的是 HTTP 代理,不知道这是否有什么区别。
编辑:我发现了这个问题的原因。我的 /etc/hosts 文件中的主机名是错误的。将其更正为我的主机名后,一切都正常了。我意识到这是由于 DNS 引起的,这要感谢 bahamat 的出色回答。我仍然不明白为什么只有 Java 应用程序受到影响,但无论如何它已经修复了。
答案1
你试过寻找吗这里?
问:为什么 jEdit 启动这么慢?
A:有些插件需要大量的设置 - 如果你禁用一个插件,你就能确定罪魁祸首。jEdit 通常启动得很快,不需要插件
- 进入实用程序菜单并选择活动日志。
- 滚动到您看到类似“[通知] JARClassLoader:启动插件 XXX”之类的行的区域。
不过,您的症状听起来像是 DNS 超时。在 Debian 上,sun-java-jre 依赖于 avahi(用于 mDNS)。也许您有一个插件正在尝试执行超时的 DNS 查找。