作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题
代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等
回答
在 GC 过程中,JVM 会暂停应用程序的非 GC 线程的执行,去专注执行 GC 操作,这个暂停的阶段就是 Stop The World,简称 STW
。
详解
STW 会有什么影响?
由于 STW 会暂停应用程序,则它会对应用程序的性能产生影响。
- 系统响应时间增多。当发生STW时,所有的应用线程都会被暂停,整个应用的执行会暂时停止,直到 GC 完成。这段暂停时间会直接影响到应用的响应时间,尤其是在高并发的系统中,用户请求可能会出现较长时间的延迟。
- 性能抖动。STW 并不是固定时间发生的,它是由内存使用情况、GC的调优参数等多方面因素来决定的,所以 STW 会带来不确定的暂停时间,会导致系统出现性能抖动情况。
- 吞吐量下降。当发生 STW 时,所有应用线程都会被暂停,这就意味着在这段时间内,应用程序是无法执行任何业务相关的工作。如果系统频繁地进入 STW,则会严重减少应用程序的正常运行时间,导致系统的吞吐量下降。