面试官追问的STW,到底什么是STW?有什么影响?

STW,即Stop-The-World的缩写,指的是系统在执行特定操作时需暂停(停止)所有应用程序线程。

这个概念在早起文章中

Java虚拟机之垃圾收集算法

有提到过(如图)。

也有在文章

学习笔记之JVM调优之调优案例让你吊打面试官

提到过(如图):

所以感兴趣的小伙伴可以去看下往期文章。

步入正题

所谓的**STW,**在Java中,当需要执行垃圾回收时,垃圾回收器会停止应用程序的所有线程,以便安全地识别和回收不再使用的对象。这个过程被称为"Stop The World"。

STW事件会暂时中断应用程序的运行。对于需要高响应性或实时性能的应用程序,这可能引发性能问题,因为它会导致响应延迟。

在STW期间,应用程序的响应时间(RT)和吞吐量(QPS)都会受到影响,这可能导致性能表现的不确定性,特别是在负载较高的情况下。

为了减少STW带来的影响,需要对垃圾收集器的配置进行优化,例如选择不同类型的垃圾收集器、调整堆大小或其他垃圾收集器参数。

例如,选择并发回收器作为垃圾回收器,如CMSG1等,因为并发回收器主要关注的是减少STW的时长。它允许垃圾收集线程在应用程序线程运行的同时执行部分垃圾收集工作,从而减少了STW的时间。在并发回收期间,只会在特定的收集阶段发生短暂的STW。

关于Java虚拟机的垃圾收集器可参考文章

带你走近Java虚拟机到底有哪些经典的垃圾收集器

其它STW场景

除了垃圾收集(GC)中的STW事件之外,STW这个术语在其他上下文中也可能被引用。

举例来说:

  1. 操作系统和硬件升级/维护:在执行操作系统升级或硬件维护时,可能需要完全暂停系统功能,以确保安全地进行更新和维护。这种情况下的STW意味着所有在系统上运行的应用和服务都会被临时停止。
  2. 数据库维护:在某些数据库操作中,如重组索引、执行特定类型的备份或升级数据库系统时,可能需要暂时停止数据库服务,这也可以被视为一种STW事件,因为它会中断所有数据库操作。
  3. 消息队列的重新平衡:在分布式消息队列系统(例如Kafka)中,重新平衡是指在消费者群体中添加或删除消费者时重新分配分区的过程。在这个过程中,消息消费可能会暂时停止,直到重新平衡完成,确保所有分区正确地重新分配给新的消费者群体。

如有问题,欢迎加微信交流:w714771310,备注- 技术交流 。或微信搜索【码上遇见你】。

免费的Chat GPT可微信搜索【AI贝塔】进行体验,无限使用。

好了,本章节到此告一段落。希望对你有所帮助,祝学习顺利。

相关推荐
YDS8291 小时前
MyBatis-Plus精讲 —— 从快速入门到项目实战
java·后端·spring·mybatis·mybatis-plus
风止何安啊1 小时前
Event Loop 教你高效 “划水”:JS 单线程的“摸鱼”指南
前端·javascript·面试
我是华为OD~HR~栗栗呀1 小时前
华为OD-C面经-23届学院哦
java·c++·python·华为od·华为·面试
Lear1 小时前
【MySQL】索引失效10大场景详解:如何避免索引失效提升查询性能
后端
Lear2 小时前
【Spring】事务失效场景详解:原理、问题与解决方案
后端
青白菜2 小时前
将Java程序打包成exe文件
后端
泉城老铁2 小时前
springboot+vue 如何实现海康摄像头喊话功能
前端·vue.js·后端
小码编匠2 小时前
C# 实现网络文件传输:打造稳定可靠的工业级工具
后端·c#·.net
一 乐2 小时前
美食推荐|基于springboot+vue的美食分享系统设计与实现(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·美食
清晓粼溪2 小时前
SpringMVC02:扩展知识
java·后端·spring