JVM知识——安全点

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

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

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

相关推荐
解救女汉子8 分钟前
SQL触发器如何获取触发源应用名_利用APP_NAME函数追踪
jvm·数据库·python
zmj3203241 小时前
UDS 0x27 安全访问(种子 / 密钥 Seed-Key) 的用法、流程、算法、存储位置、安全机制
安全·can·诊断·uds·27服务
skywalk81633 小时前
发现Kotti项目的python包Beaker 存在安全漏洞
开发语言·网络·python·安全
yejqvow124 小时前
Pandas 高效实现组内跨行时间戳匹配与布尔标记
jvm·数据库·python
团子云技术4 小时前
从 HTTPS 到 LLM Agent:我们重回数字安全的黑暗时代了吗?
安全·ai编程
qq_189807034 小时前
html标签如何提升可访问性_aria-label与title区别【指南】
jvm·数据库·python
qq_349317485 小时前
mysql如何设置定时自动备份脚本_编写shell脚本与cron任务
jvm·数据库·python
前进吧-程序员5 小时前
C++ 内存到底分配在哪?
java·jvm·c++
2401_832365525 小时前
Chart.js 4 中基于数据实际范围的线性渐变填充方案
jvm·数据库·python
qq_342295825 小时前
如何让 Bootstrap 图标在 Vue 3 中持续旋转动画
jvm·数据库·python