最早在交叉编译部署时,就遇到了提示:
OpenJDK 64-Bit Server VM warning: No monotonic clock was available - timed services may be adversely affected
不同虚拟机,冒号前的内差异可以忽略。
看这句提示的意思是没有可用的单调时钟,基于时间的服务可能会受影响。
而我们的问题就是系统时间改变时,插件工作的周期性就错误。关联度极高。
怀疑有2个方面的原因,
一个是工具链本身不支持MONOTONIC时间(编写测试程序,确认没有问题);
一个是虚拟机本身有些问题。(顺着这个log出发,查找根源,看源代码,原来hotspot是依赖librt.so这个库)
将工具链中这个librt.so放到系统中后,java启动没有这个提示了,第三方插件也不会受时间调整而频繁上报了。
所以,遇到可疑的提示,还是尽早分析原因,以免后续的工作受影响。再就是要勇于追踪相关的源码,有时,这是解决问题的快速方法。
后来,就搜索了Java的时间使用,又一片文章不错
%2D+timed+services+may+be+adversely+affected&qid=8f37a3f500041023&p1=1