JVM知识——安全点

安全点是JVM要准备进行垃圾回收时,选定一些特定的位置,当应用程序线程执行到这些位置时,安全的先暂停下来,以便JVM执行GC线程进行垃圾回收。

JVM在字节码指令中会选取一些指令作为安全点,安全点的选取一般是循环结束、方法调用前后、异常跳转等指令位置。

如果线程长时间无法到达安全点,如线程处于sleep休眠或blocked阻塞状态,为了处理这种情况,JVM引入了安全区域的概念,安全区域是指在一段代码片段中,引用关系不会发生改变,因此只要线程处在这个区域中,外部如果要进行垃圾回收它都是安全的。当应用程序线程进入安全区域时,会标识自己已经进入了安全区域,这样GC线程就不用考虑我了,我不会给你造成任何麻烦,当此线程要离开安全区域时,会检查GC垃圾回收是否已经完成,如果完成了,则继续向下执行,否则,就必须等待,直到收到可以离开安全区域的信号为止。

相关推荐
半瓶榴莲奶^_^13 小时前
jvm java虚拟机
java·jvm
2401_8463395613 小时前
CSS如何优化大型项目样式_使用SASS预处理器提升开发效率
jvm·数据库·python
m0_6742946419 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
运气好好的20 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
2401_8714928521 小时前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python
步辞21 小时前
Redis如何利用LFU算法优化缓存命中率
jvm·数据库·python
forEverPlume1 天前
golang如何实现日志按级别过滤_golang日志按级别过滤实现教程
jvm·数据库·python
星幻元宇VR1 天前
VR航空航天科普设备助力航天知识普及
人工智能·科技·学习·安全·vr·虚拟现实
m0_624578591 天前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
2401_871492851 天前
如何在 React Router v6 中正确配置多路由组件显示
jvm·数据库·python