码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【JVM笔记】安全点与安全区域


    目录

    安全点(Safe Point)

    抢先式中断(目前没有虚拟机采用了)

    主动式中断

    安全区域(Safe Region)


    安全点(Safe Point)

    程序执行时并非在所有地方都能停顿下来开始 GC,只有在特定的位置才能停顿下来开始 GC,这些位置称为 “安全点(Safepoint)”

    Safe Point 的选择很重要,如果太少可能导致 GC 等待的时间太长,如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短暂,通常会根据 “是否具有让程序长时间执行的特征” 为标准。比如:选择一些执行时间较长的指令作为 Safe Point, 如方法调用、循环跳转和异常跳转等

    如何在 GC 发生时,检查所有线程都跑到最近的安全点停顿下来呢?

    抢先式中断(目前没有虚拟机采用了)

    首先中断所有线程。如果还有线程不在安全点,就恢复线程,让线程跑到安。全点

    主动式中断

    设置一个中断标志,各个线程运行到 Safe Point 的时候主动轮询这个标志,如果中断标志为真,则将自己进行中断挂起

    安全区域(Safe Region)

    Safepoint 机制保证了程序执行时,在不太长的时间内就会遇到可进入 GC 的 Safepoint 。但是,程序 “不执行” 的时候呢?例如线程处于 Sleep 状态或 Blocked 状态,这时候线程无法响应 JVM 的中断请求,“走” 到安全点去中断挂起,JVM 也不太可能等待线程被唤醒。对于这种情况,就需要安全区域(Safe Region)来解决

    安全区域是指在一段代码片段中,对象的引用关系不会发生变化,在这个区域中的任何位置开始GC 都是安全的。我们也可以把 Safe Region 看做是被扩展了的 Safepoint 

    实际执行时,当线程运行到 Safe Region 的代码时,首先标识已经进入了 Safe Region,如果这段时间内发生 GC, JVM 会忽略标识为 Safe Region 状态的线程

    当线程即将离开 Safe Region 时, 会检查 JVM 是否已经完成 GC,如果完成了,则继续运行,否则线程必须等待直到收到可以安全离开 Safe Region 的信号为止

  • 相关阅读:
    uni-app 高度自适应
    小学生python游戏编程arcade----坦克大战2
    Android学习之路(17) Android Adapter详解
    力扣之滑动窗口《循序渐进》(209.长度最小的子数组、904. 水果成篮)
    微信照片过期打不开怎么办?用这个办法可找回
    Java笔记 集合框架
    16.cuBLAS开发指南中文版--cuBLAS中的Level-1函数rotm()和rotmg()
    安装 ELEMENTOR PRO
    【github pages】: windows下构建一个github pages, 实时更新博客
    Linux环境开发工具yum、makefile的使用 【Linux】
  • 原文地址:https://blog.csdn.net/lijibai_/article/details/126285556
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号