当前位置: 首页 > news >正文

Java-Safe Point(安全点)

虽然安全点的概念和垃圾回收相关,但是概念还是比较独立的,所以本文是从这篇文章Java-虚拟机-垃圾收集器/垃圾收集算法/GCROOT根中抽出来的

安全点safe point

当执行垃圾回收(GC)的时候,不是立马就执行的,而是需要一个恰当的时机,这个时机,就叫做安全点,可以理解和坐公交一样,不是说你想下车,就马上下车的,最起码,也要等车到达最近一个公交站点,才允许下车,下面几个位置(时机)可以作为安全点
方法返回之前
调用某个方法之后
抛出异常的位置
循环的末尾
主要是为了保证代码执行的完整度
safepoint逻辑上等同于并发框架中的CyclicBarrie类,如果你会用这个类,那么应该很好理解这个逻辑的,当要执行GC的时候,安全点打开,所以所有线程都会在执行上述几个位置的时候,进入安全点表,所有线程都跑到安全点之后,GC线程开始执行GC

PS:仔细观察这几个安全点,总结起来其实就是别执行方法,只有线程不执行方法了,那么它才能有可能是安全点,因为当执行方法的时候,栈内的数据是变化的,不可预知的,可以理解成,当线程A正在执行某个方法,那么线程A一定不能GC

安全区域safe region

如果一段代码在运行的时候,引用关系不会发生变化,那么在这段代码就是安全区域,而安全区域里的任意位置,都是安全点,比如下面这段代码

Thread.sleep(666);

sleep方法中的任意位置,都是安全点,所以GC的时候,如果某个线程正好处于安全区域,则该线程相当于直接到达了安全点

http://www.lryc.cn/news/308456.html

相关文章:

  • 大数据旅游数据分析:基于Python旅游数据采集可视化分析推荐系统
  • 打造智能汽车微服务系统平台:架构的设计与实现
  • 机试指南:Ch5:线性数据结构 Ch6:递归与分治
  • 展厅设计的理念是什么
  • springboot 定时任务备份mysql数据库
  • PMP考试之20240301
  • 什么是MAC地址? win10电脑查看MAC地址的多种方法
  • vue3中的基本语法
  • Timeplus-proton流处理器调研
  • H3C防火墙安全授权导入
  • 使用 OpenCV 通过 SIFT 算法进行对象跟踪
  • SHELL 脚本: 导出NEO4j DUMP并上传SFTP
  • Vue 封装一个函数,小球原始高度不固定,弹起比例不固定、计算谈几次后,高度低于1米
  • 外地人能申请天津公租房吗?2024天津积分落户租房积分怎么加?
  • 毕业设计——基于springboot的聊天系统设计与实现(服务端 + 客户端 + web端)
  • 公告栏功能:自动弹出提醒,重要通知不再错过
  • 网络编程学习
  • centos物理电脑安装过程(2024年1月)
  • Web自动化测试平台开发---Automated_platform
  • mybatis-plus: 多租户隔离机制
  • 用Socks5代理游戏,绕过“网络海关”去探险
  • SpringBoot整合rabbitmq-直连队列,没有交换机(一)
  • CUDA C:查看GPU设备信息
  • 深度学习如何入门?——从“小白”到“大牛”的深度学习之旅
  • 编译 qsqlmysql.dll QMYSQL driver not loaded
  • Android日历提醒增删改查事件、添加天数不对问题
  • 【力扣hot100】刷题笔记Day15
  • vue-显示数据
  • kali linux常用命令
  • HTML5:七天学会基础动画网页4