认识java-STW:Stop the World
1.Stop-the-World,簡(jiǎn)稱STW,指的是GC事件發(fā)生過(guò)程中,會(huì)產(chǎn)生應(yīng)用程序的停頓。停頓產(chǎn)生時(shí)整個(gè)應(yīng)用程序線程都會(huì)被暫停,沒有任何響應(yīng)。有點(diǎn)像卡死的感覺,這個(gè)停頓成為STW。
? ? 可達(dá)性分析算法中枚舉根節(jié)點(diǎn)(GC?Roots)會(huì)導(dǎo)致所有Java執(zhí)行線程停頓。
?? ?(1)分析工作必須在一個(gè)能確保一致性的快照中進(jìn)行。
? ? (2)一致性指整個(gè)分析期間整個(gè)執(zhí)行系統(tǒng)看起來(lái)像被凍結(jié)在某個(gè)時(shí)間點(diǎn)上。
? ? (3)如果出現(xiàn)分析過(guò)程中對(duì)象引用關(guān)系還在不斷變化,則分析結(jié)果的準(zhǔn)確性無(wú)法保證。
2.被STW中斷的應(yīng)用程序線程會(huì)在完成GC之后恢復(fù),頻繁中斷會(huì)讓用戶感覺像是網(wǎng)速不快造成電影卡帶一樣,所以我們需要減少STW的發(fā)生。
3.STW事件和采用哪款GC無(wú)關(guān),所有的GC都有這個(gè)事件。
4.哪怕是G1也不能完全避免Stop-the-world情況發(fā)生,只能說(shuō)垃圾回收器越來(lái)越優(yōu)秀,回收效率越來(lái)越高,盡可能地縮短了暫停時(shí)間。
5.STW是JVM在后臺(tái)自動(dòng)發(fā)起和自動(dòng)完成的。在用戶不可見的情況下,把用戶正常的工作線程全部停掉。
6.開發(fā)中不要用System.gc();會(huì)導(dǎo)致Stop-the-world的發(fā)生。
STW驗(yàn)證
結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的认识java-STW:Stop the World的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java-内存溢出与内存泄漏
- 下一篇: jvm-垃圾回收随时都可以STW吗?带你