java中JVM和系统时间不一致,说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用那个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中JVM和系统时间不一致,说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用那个相关的知识,希望对你有一定的参考价值。
java中JVM和系统时间不一致,不是时区的问题,时间差就差几分钟,
说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用,加到那个里面?怎么加?加到哪一行?
而如果是用tomcat等服务器启动的,则需要在启动脚本里面添加上这个参数。以tomcat(linux)为例,在bin/catalina.sh里面加上JAVA_OPTS="$JAVA_OPTS -XX:+UseGetTimeOfDay ",可以加在开头的那段长长注释后面。
如果是windows tomcat,则修改bin/catalina.bat,在里面加上set JAVA_OPTS=%JAVA_OPTS% -XX:+UseGetTimeOfDay 参考技术A 相差几分钟,是不是你服务器的时间就不对追问
时间对的呢,上面说os时间在程序启动的时候同步一次时间,以后是根据cpu计算的,所以要加上-XX:+UseGetTimeOfDay参数,他就可以了,但不知道这个参数加在那里锕,
时区java项目new date()时间和服务器时间(数据库)不一致
你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置: -Dfile.encoding=UTF8 -Duser.timezone=GMT+08
在一个精简的Linux安装上jre,发现所有的java程序获取的时间都不是系统时间。后来发现原来是时区不对。java程序获取的时间都是GMT时间,而系统是北京时间,应该是GMT+8,刚好相差8小时。网上搜了好多资料,只有两种方法:
1、在程序中使用java的函数设定时区。
2、在启动java程序时加参数-Duser.timezone=GMT+8
不过总不能去修改每个程序的源码去设定时区吧。也不想在每个java程序启动的时候加参数,太麻烦了。就没有一劳永逸的办法了?
开始以为jre应该会有某个配置文件保存了时区的配置,结果一无所获。不过总有jre总要去系统中获取时区配置吧。于是开始想是不是java用的是 linux中的系统配置文件?于是到linux系统下/etc/sysconfig目录看时区配置。发现缺少了clock这个用于设置时区的文件。把别的 linux系统中的这个文件拷过来一试,ok。java程序的时间和系统时间一致了。看来jre是从/etc/sysconfig/clock这个文件中 获取时区信息的。
附clock文件内容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
ZONE -- 时区
UTC -- 表明时钟设置为UTC。
ARC -- 仅用于alpha表明使用ARC。
以上转载自:https://www.cnblogs.com/konghou/p/4118770.html
按照上面的步骤更改后仍然没有解决问题
查询服务器时间
1、date
2、hwclock
3、hwclock --localtime
hwclock --localtime 硬件时钟真正的时间,经测试项目实际使用的时间。
修改hwclock --localtime
一、使用命令与互联网时间同步,然后再写入硬件(也就是CMOS)
ntp服务器同步时间
代码:
sudo ntpdate cn.pool.ntp.org
将调整后的时间写入cmos
代码:
sudo hwclock --systohc
二、这一种方法与第一种有异曲同工的效果,只是不用与ntp服务器同步
设置系统当前时间
#date -s ‘2008-6-8 09:19:00‘
#date -s ‘09:19:00‘
#date -s ‘09:19‘
写入硬件
#hwclock -w --localtime
以上是关于java中JVM和系统时间不一致,说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用那个的主要内容,如果未能解决你的问题,请参考以下文章