STW,即Stop-The-World的缩写,指的是系统在执行特定操作时需暂停(停止)所有应用程序线程。
有提到过(如图)。
图片
提到过(如图):
图片
步入正题
所谓的STW,在Java中,当需要执行垃圾回收时,垃圾回收器会停止应用程序的所有线程,以便安全地识别和回收不再使用的对象。这个过程被称为“Stop The World”。
STW事件会暂时中断应用程序的运行。对于需要高响应性或实时性能的应用程序,这可能引发性能问题,因为它会导致响应延迟。
在STW期间,应用程序的响应时间(RT)和吞吐量(QPS)都会受到影响,这可能导致性能表现的不确定性,特别是在负载较高的情况下。
为了减少STW带来的影响,需要对垃圾收集器的配置进行优化,例如选择不同类型的垃圾收集器、调整堆大小或其他垃圾收集器参数。
例如,选择并发回收器作为垃圾回收器,如CMS、G1等,因为并发回收器主要关注的是减少STW的时长。它允许垃圾收集线程在应用程序线程运行的同时执行部分垃圾收集工作,从而减少了STW的时间。在并发回收期间,只会在特定的收集阶段发生短暂的STW。
关于Java虚拟机的垃圾收集器可参考文章
带你走近Java虚拟机到底有哪些经典的垃圾收集器
其它STW场景
除了垃圾收集(GC)中的STW事件之外,STW这个术语在其他上下文中也可能被引用。
举例来说: