1. GC日志时间简介
GC日志中会详细的记录每一次GC事件所花费的时间信息,每一个GC事件所花费的时间都会以"user"、"sys"、"real"3个维度来记录,这3个时间是什么意思呢?他们之间有什么区别?
real time:GC事件整个过程自然流逝的绝对时间,这个跟钟表上的时间是一致的。(ps:如果GC从8点开始,8点30结束,real time就是30分钟)。
user time:cpu花在用户态的时间
sys time:cpu花在内核态的时间,也就是说内核发生系统调用所花费的时间,不包括调用lib库的时间,因为这是发生在用户态。
2. real time > sys + user time 的情况
一般的GC事件中,real time是小于sys+user time的,因为一般是多个线程并发的去做GC,所以real time是要小于sys+user time的。比如说:user+sys是2秒,如果是有5个GC线程并发的做垃圾回收,那么real time差不多是2000/5=400ms左右。
但是,有时候会见到real time大于sys+user time的情况,比如:
[Times: user=0.20 sys=0.01, real=18.45 secs]
如果在你的GC日中出现大量的这种日志,说明你的应用可能存在下列问题:
2.1 IO负载繁重
当服务器的IO负载非常重的时候(网络、磁盘访问、用户交互),re