Chinaunix首页 | 论坛 | 博客
  • 博客访问: 801773
  • 博文数量: 247
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 501
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-12 21:53
个人简介

系统未建立

文章分类

全部博文(247)

文章存档

2021年(1)

2020年(3)

2019年(5)

2018年(3)

2017年(44)

2016年(75)

2015年(52)

2014年(63)

2013年(1)

我的朋友

分类: 嵌入式

2017-09-30 13:41:51

最近遇到一个第三方插件工作在自己交叉编译的Java环境里面,周期性工作不对的问题,而在其他的环境下工作是好的。
最早在交叉编译部署时,就遇到了提示:
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

阅读(1734) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~