首页 > 编程语言 > 详细

java G1 GC的Object Copy时间过长

时间:2021-04-09 00:02:08      阅读:386      评论:0      收藏:0      [点我收藏+]

  有一次线上GC耗时过长报警了,一看GC日志,YGC偶尔会耗时过长,有个别YGC耗时甚至超过了9s,一看更详细的日志,发现Object Copy花了9s多,如下图:

技术分享图片

  这段的意思是这样的:

技术分享图片

  意思是复制存活对象耗时过长,而剩余可扩展的堆内存还很多,显然不是内存不足造成的。正好有同事在排查swap分区相关的问题,就看了下线上的swap空间使用情况,发现线上的应用使用了太多swap空间,这样子的话确实会影响内存复制的速度。那为什么会使用到swap空间呢?看了下相关资料,提到了一个linux内核参数swappiness,假设这个值为a,那么当已使用的物理内存高于(100-a)%时,就会开始使用swap分区。我们在终端上执行【cat /proc/sys/vm/swappiness】发现打印出来的值是60,也就是说,当物理内存使用率高于40%时,就会使用swap分区了。

  于是乎,找运维改了下这个参数,调小成了30,后来就再也没报警了。

java G1 GC的Object Copy时间过长

原文:https://www.cnblogs.com/ZeldaBreath/p/14635032.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!