分析&回答


什么是STW?

STW 是 GC 中很重要的概念,全称 Stop the world,即程序全局暂停时间,GC 优化算法都是围绕减少 STW 的时间或频率。

  • 在STW 状态下,JAVA的所有线程都是停⽌执⾏的 -> GC线程除外(native代码可以执行)
  • 一旦Stop-the-world发生,除了GC所需的线程外,其他线程都将停止工作,中断了的线程直到GC任务结束才继续它们的任务。
  • STW是不可避免的,垃圾回收算法执⾏一定会出现STW,我们要做的只是减少停顿的时间

什么时候进入STW状态?

可达性分析算法中枚举根节点(GC Roots)会导致所有Java执行线程停顿,进入STW状态

为什么一定要STW停顿的原因?

  • 如果没有 STW,会出现浮动垃圾(即标记完是存活对象,线程随之结束,可能对象已经变成了垃圾),回收性能差、效率低。
  • 分析工作必须在一个能确保一致性的快照中进行
  • 一致性指整个分析期间整个执行系统看起来像被冻结在某个时间点上
  • 如果出现分析过程中对象引用关系还在不断变化,则分析结果的准确性无法保证

如何减少 STW

  • 合理分配内存,减少Full GC

    • 大对象频繁进行老年代,造成老年代空间快速被占满,造成Full GC
    • 很多对象从年轻代 晋升 到老年代
    • 永久带 空间不足(jdk1.8 之后 metadata space 空间不足)
  • 选择更优的GC收集器可以减少停顿的时间

为了大家更加方便的刷题,我们对文章进行了分类和整理,免费为大家提供刷题服务。程序员不欺骗程序员,赶紧扫码小程序刷起来!

为了一站式解决面者刷题问题,部分内容可能存在摘录情况,如有侵权辛苦您留言联系我们,我们会删除文章或添加引用文案,Thanks!

JVM 如何减少 STW相关推荐

  1. JVM中的STW(Stop The World)

    1.Stop The World Stop一the一World,简称STW,指的是Gc事件发生过程中,会产生应用程序的停顿.停顿产生时整个应用程序线程都会被暂停,没有任何响应,有点像卡死的感觉,这个停 ...

  2. java stw_快速理解Java垃圾回收和jvm中的stw

    Java中Stop-The-World机制简称STW,是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外).Java中一种全局暂停现象,全局停顿,所有Java代码停 ...

  3. JVM中的STW和CMS

    test 转载于:https://www.cnblogs.com/wangjing666/p/11394141.html

  4. JVM学习笔记之-垃圾回收相关概念 System.gc()的理解 内存溢出与内存泄漏 STW 垃圾回收的并行与并发 安全点与安全区域 再谈引用:强引用 软引用 弱引用 虚引用 终结器引用

    System.gc()的理解 在默认情况下,通过System.gc()或者Runtime. getRuntime ( ).gc ()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试 ...

  5. JVM之垃圾回收 II ——方法区和堆区的垃圾回收、STW

    垃圾回收 II 一.方法区(jdk1.7)/元空间(jdk1.8) 1.永久代和元空间的关系: 2.方法区/元空间的垃圾回收内容 3.方法区/元空间垃圾回收的方式 二.堆 1.GC堆的划分 2.堆区G ...

  6. JVM基础:什么是STW?

    今天笔试题,出了个STW,咱是见也没见过,漏了怯了 无语,仔细回忆了下,知道Stop-The-World这个词,不知道SWT,无语 文章目录 STW:Stop-The-World STW概念 进入SW ...

  7. jvm学习——18.垃圾回收之STW

    159 Stop The World Stop一the一World,简称STW,指的是GC事件发生过程中,会产生应用程序的停顿.停顿产生时整个应用程序线程都会被暂停,没有任何响应,有点像卡死的感觉,这 ...

  8. JVM基础 -> 什么是STW?

    什么是STW? STW: Stop-The-World: 是在垃圾回收算法执⾏过程当中,将JVM内存冻结丶应用程序停顿的⼀种状态. 在STW 状态下,JAVA的所有线程都是停⽌执⾏的 -> GC ...

  9. JVM的STW(stop the world)机制及调优案例

    STW(stop the world)是什么 1.stop the world指的是GC事件发生过程中,会产生应用程序的停顿.停顿产生时整个应用程序线程都会被暂停,没有任何响应, 有点像卡死的感觉,这 ...

最新文章

  1. url模块和querystring模块
  2. AngularJS 1.x系列:Node.js安装及npm常用命令(1)
  3. 2011年7月28日星期四精彩网语
  4. Android Security视频学习合集
  5. js jquery 函数回调
  6. 我最喜欢的科目是计算机英语,我最喜欢的科目英语作文
  7. 【Linux】一步一步学Linux——who命令(95)
  8. Oracle delete input与delete all input
  9. Eclipse主题下载安装
  10. 1198_MISRA_C规范学习笔记_Rule 8.6 Rule 8.7
  11. 【毕业季·进击的技术er】大学生计算机毕业设计应该这样写
  12. hrbust 1853 哈理工oj 1853 幼稚园的数学Ⅰ【Biginteger】
  13. 在vue.config.js下配置别名alias
  14. 下半年软考已经考完了,有没有对答案的同学呀
  15. 【2018年7月英语学习】--零散中星星点点
  16. 腾讯云学生服务器如何购买
  17. 计算机专业英语实战记录(整理了上千个相关单词)
  18. Java Web框架简介
  19. 做修改时,html各种类型选中状态
  20. qq炫舞显示服务器断开,快速还原win7系统玩QQ炫舞老是掉线提示与服务器断开连接的处理次序...

热门文章

  1. R语言学习笔记——QQ图画法解析
  2. 软件评测师-7软件生存周期
  3. 独立显卡和集成显卡区别
  4. 电脑格式化后文件还能恢复吗
  5. 微信小程序 Canvas drawImage()绘图头像二维码 安卓用户显示半透明!
  6. C++如何保留两位有效数字!!!!
  7. 无线路由器怎么用?教你怎么设置无线路由
  8. 离线在线计算机系统,怎么离线重装系统?最简单离线系统重装方法
  9. 五上语文课文名字记忆法
  10. 打击玩家不良行为!《彩虹六号:围攻》新的信誉系统