java中JVM和系统时间不一致,说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用那个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中JVM和系统时间不一致,说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用那个相关的知识,希望对你有一定的参考价值。

java中JVM和系统时间不一致,不是时区的问题,时间差就差几分钟,
说是要加上-XX:+UseGetTimeOfDay参数,请问这个参数怎么使用,加到那个里面?怎么加?加到哪一行?

加到JVM参数里,比如手输入java命令启动的,假设原来是java test.TimeTest,把-XX:+UseGetTimeOfDay加到java命令后,包名.类名之前,中间用空格分隔,就是java -XX:+UseGetTimeOfDay test.TimeTest
而如果是用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的时区不一致。 

你的操作系统应该是中国的时区吧,而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参数,请问这个参数怎么使用那个的主要内容,如果未能解决你的问题,请参考以下文章

jvm调优的参数设置

JVM性能调优(2) —— 内存设置和查看GC日志

JVM升级七(启动参数)

时区java项目new date()时间和服务器时间(数据库)不一致

JVM|02内存模型

jvm不打印异常栈