JVM中存在一个错误,无法在Sytem时间向后更改期间进行整体调度,这也影响了非常基本的Object.wait和Thread.sleep方法。当系统时间倒退甚至几秒钟时,保持Java
App运行变得太冒险了。您永远都不知道Java应用程序最终会变成什么样。
因此,我们决定:
- 编写看门狗脚本(非Java :))以检查时间变化。
- 如果时间倒退一定时间,请关闭并重新启动Java应用程序。
另一种可能性是迁移到32位JVM,但是我们使用的是JNI,然后目标平台上使用的本机库不兼容32位。同样,根据我们的经验,32位JVM将我们的目标限制为1.6G堆,这对于我们来说根本不够用。
我知道我们的解决方案不是最优雅的解决方案,但是直到JVM修复或找到更好的解决方案之前,似乎没有其他办法。
编辑: 除了上述解决方案之外,我们还考虑了克里斯的第一条建议:
- 将NTP配置为永远不会跳太长时间。慢慢改变时间。在停机期间仅手动应用较大的时间跳跃。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)