我试图在这里解释我的问题,即使缓存被“禁用”,JVM 似乎也会缓存失败的 DNS 查找,但现在我想更好地制定它。基本上,我们在运行 Angstrom Linux 的小型基于 ARM 的设备上运行 Java 代码(但在 RHEL6 上也有相同的行为)。
如果我在拔掉网络电缆的情况下运行代码,然后在一段时间后插入电缆,程序就会被阻止并且永远不会“识别”网络上的更改,即我们使用的网络服务总是不成功,尽管 ping 例如 google来自另一个终端的工作在那一刻。该程序有时甚至会被阻塞,因此不会捕获到异常。不知何故,它卡在某个地方。
我尝试调整内部值,例如 networkaddress.cache.ttl 和 networkaddress.cache.negative.ttl,但没有任何改变。很明显,问题出在较低层以及 OS 和 JVM 之间的通信中。有什么方法可以做一些冲洗,提神等……无论如何。
最后我基本上想要的是让 JVM 在网络设置中遵循操作系统。