码农知识堂 - 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 的信号为止

  • 相关阅读:
    SpringBoot项目创建及其核心设计思想
    ES6 入门教程 20 Generator 函数的异步应用 20.4 Thunk 函数
    【lombok】equals相等返回false contains包含返回false? lombok注解的一个天坑
    大模型LLM深入浅出、主打通俗易懂
    OKHttp3工具类
    【UI自动化测试】selenium + python3使用总结(二)
    spark分布式计算框架
    19:A*B问题
    Spring、MyBatis、Druid、MySQL不使用事务执行SQL语句分析
    GFS 分布式文件系统
  • 原文地址:https://blog.csdn.net/lijibai_/article/details/126285556
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号