JVM - 11:JVM最让人无奈的痛点 Stop the World

12 篇文章 2 订阅
新生代垃圾回收场景

我们新生代有三块区域 Eden 、s0、s1

此时系统不停运行

就会把Eden占满

这个时候就会触发Minor GC

触发垃圾回收会有专门的线程来处理的

而对不同的区域会有不同的垃圾回收器

相当于垃圾回收线程配合垃圾回收器使用垃圾回收算法对指定的区域进行回收

针对新生代的垃圾回收器

Serial
单线程,会直接暂停系统工作线程。通常不用

ParNew
支持多个线程回收

GC的时候还能创建对象吗

垃圾回收的时候,先标记处存活的对象,然后把存活的对象复制到另外一个s区域

如果这个期间允许创建对象

会出现即将清空的区域,会出现没有被标记到要存活的对象

全乱套了

所以在GC的时候允许创建对象是灰常不合适的

JVM的痛点:Stop the World

所以平时运行中的JVM最大的痛点,就是 Stop the World 停止工作

因为在垃圾回收的时候,要尽量让垃圾回收器专心工作

不能随便让Java创建对象了

所以此时,JVM会直接在后台进入Stop the World状态

也就是说,他会直接停止我们写的Java系统的所有工作线程,让我们写的代码不再运行!

这样的话,垃圾回收的时候,就不会创建新的对象

Stop the World造成的系统停顿

假设我们的垃圾回收需要100ms

那么就可能导致我们的系统会直接停顿100ms,不接受任何请求

最直接的影响就是,这期间用户发起的请求,会没有任何响应

如果内存分配不合理

平均10多分钟一次 Full GC

最直观的影响就是 10来分钟卡一次,一次可能几秒甚至几十秒

所以,无论是新生代,还是老年代,尽量不要让GC频率过高

也避免持续时间过长

让系统无法正常运行

这也是JVM优化中,最需要关注的一个点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值