原文在这里: GC日志中sys时间比user时间长该如何处理?

GC日志中会详细的记录每一次GC事件所花费的时间信息,每一个GC事件所花费的时间都会以’user’、‘sys’、'real’3个维度来记录,这3个时间是什么意思呢?他们之间有什么区别?

1.real time:GC事件整个过程自然流逝的绝对时间,这个跟钟表上的时间是一致的。(ps:如果GC从8点开始,8点30结束,real time就是30分钟)。

2.user time:cpu花在用户态的时间

3.sys time:cpu花在内核态的时间,也就是说内核发生系统调用所花费的时间,不包括调用lib库的时间,因为这是发生在用户态。

一般来说,GC事件中user time是大于sys time的,因为在发生GC的时候,大部分时间是在执行JVM的代码,只有很少的时间用在内核中。但是,有时候是会发生sys time比user time长的场景。

比如:

[Times: user=0.04 sys=0.35, real=0.42 secs]
  • 1

上例中,sys time是0.35秒,这个要远大于user time的0.04秒。

如果在你的GC日志中经常有这样的日志,那你很有可能遇到了以下问题:

1.操作系统的问题

操作系统出现诸如缺页、未对齐的内存引用、浮点数异常这样的问题的时候就会花费大量的sys time,要确保你的操作系统打好了补丁,升级了最新版本,有足够的cpu、内存、磁盘空间。

2.虚拟机相关问题

如果你的应用是运行在虚拟化环境中,可能会出现sys time比user time长,要确保虚拟化环境不因为环境多而过载,同时要确保给运行你应用的虚拟机分配了足够的资源。

3.内存限制

在linux系统上,JVM和操作系统都可能会申请大的内存页(比如2M/页),如果操作系统找不到连续的空闲内存来分配2M的页,那它就会把所有运行的进程全都暂停掉,然后整理内存以找到连续的空闲内存。如果操作系统是在做这个事情,那么sys time就会比real time还要大。如果出现了这种情况,要么就给机器分配足够的内存,要么就减少机器上运行的进程数量。

4.磁盘IO的压力

JVM会把安全点和GC事件的统计信息写到/tmp/hsperfdata_(username) 文件中,当发生GC的时候就会更新这个文件。当磁盘的IO负载比较高的时候,内核线程可能会阻塞GC线程更新这个文件。因此如果磁盘的IO负载非常重的话是有可能增加GC的停顿时间的。如果发生了这种情况,要么real time远大于sys time+user time,要么sys time远大于user time。此时,就需要降低磁盘的IO负载才可以。可以用lsof来查看磁盘的IO负载情况。

英文原文:https://blog.gceasy.io/2016/12/11/sys-time-greater-than-user-time/

如果感觉有用欢迎扫描文章开头的二维码加关注。

GC日志中sys时间比user时间长该如何处理?相关推荐

  1. java gc 时间_Java GC日志查看,GC日志时间分析

    Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...

  2. JVM实用参数 GC日志

    为什么80%的码农都做不了架构师?>>>    原文章地址:http://blog.panaihua.com/archives/151 GC日志是一个很重要的工具,它准确记录了每一次 ...

  3. Java GC 日志解析

    JVM 在Java应用程序优化中是不可缺少的一大重项,如何合理配置Java参数,如果验证配置参数的有效性,从GC日志中可以获得很重要的提示,以下是笔者对GC垃圾收集器默认开启的组合日志的部分的解析,希 ...

  4. JVM实用参数(八)GC日志

    原文地址:https://blog.codecentric.de/en/2014/01/useful-jvm-flags-part-8-gc-logging/ 作者:PATRICK PESCHLOW, ...

  5. java gc日志乱码_gc原理以及gc日志剖析

    gc原理以及gc日志 一.概述 学习Java的我们都知道垃圾收集(gc),大部分人把这项技术当作是java语言的伴生产物.事实上,gc的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正 ...

  6. 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用

    本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还"存活"着,哪些对 ...

  7. 深入理解JVM(三)——JVM之判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用

    本文转载自https://blog.csdn.net/ochangwen/article/details/51406779 本文是基于周志明的<深入理解Java虚拟机> 堆中几乎存放着Ja ...

  8. 再谈GC2:Java垃圾收集器与GC日志分析实践

    4. GC 算法(实现篇) - GC参考手册 2017年02月05日 23:58:36 阅读数:6862 您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参 ...

  9. Java无法输出gc日志_【GC分析】Java GC日志查看

    Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集. UsePa ...

最新文章

  1. Python PIL库总结
  2. 什么是bean的生命周期?
  3. 【CodeForces - 675C】Money Transfers(思维,前缀和)
  4. java spring boot 注解验证_如何理解Java原生注解和Spring 各种注解?
  5. properties文件的分类级别
  6. php zip 不能创建文件,PHP无法访问新创建的zip文件
  7. Android控件——TextView,EditText
  8. 关闭联想台式机键盘的 Fn 功能
  9. Cameralink转VGA接口转换模块
  10. 电脑计算机硬盘怎么新建,电脑如何新建一个本地磁盘
  11. XSS 一次跨站拆分法的应用
  12. 古代的圣人看你还了解几个
  13. 【每日新闻】阿里云回应大规模故障:运维操作失误 将认真改进 | 分析师:Azure已取代Windows成为微软新的增长点...
  14. 近年现场比赛补题(From 2013 to 2018)[持续更新]
  15. 《信息学奥赛》1354:括弧匹配检验
  16. 应用回归分析之岭回归(Ridge Regression,RR)
  17. 华为手机保留数据解锁密码华为手机不删除数据解锁屏密码华为手机保资料解屏幕锁华为手机不清除数据解锁教程华为荣耀解锁密码保留数据
  18. Springboot毕设项目高校体育场馆管理系统i0wqc(java+VUE+Mybatis+Maven+Mysql)
  19. (转)DataGrid资料
  20. 【国考报名】国家公务员考试报名照片证件照怎么制作

热门文章

  1. 关于缩比F16模型配平结果异常的解释说明
  2. autojs打开微信扫一扫,扫描二维码等信息的脚本
  3. Xshell远程连接服务器上的jupyter notebook
  4. 中国移动为何要对手机上网流量封顶
  5. 纯CSS3实现凹凸文字
  6. nginx http强制跳转https 配置相关信息
  7. DEDECMS站点内容怎么自动更新到新浪微博
  8. 24. 两两交换链表中的节点-两两反转链表-LeetCode
  9. 真香!一行代码搞定微信支付回调
  10. 【地图易-制图案例】全球地震分布地图