当前位置:   article > 正文

java安全点_Java-JVM-安全点SafePoint

java的安全点

Java-JVM-安全点SafePoint

转载声明:

本文系转载自以下文章:

转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。

摘要

本文主要是搜集网络上的好文来记录下安全点概念。看了 才发现自己是有多无知,还有很多东西都不清楚,需要多学习啊。

0x01 安全点是什么

OpenJDK官方定义如下:

安全点是在程序执行期间的所有GC Root已知并且所有堆对象的内容一致的点。

从全局的角度来看,所有线程必须在GC运行之前在安全点阻塞。 (作为一种特殊情况,运行JNI代码的线程可以继续运行,因为它们只使用句柄。但在安全点期间,它们必须阻塞而不是加载句柄的内容。)

从本地的角度来看,安全点是一个显着的点,它位于执行线程可能阻止GC的代码块中。 大多数调用点都能当做安全点。

在每个安全点都存在强大的不变量永远保持true不变,而在非安全点可能会被忽视。 编译的Java代码和C / C ++代码都在安全点之间进行了优化,但跨安全点时却不那么优化。 JIT编译器在每个安全点发出GC映射。 VM中的C / C ++代码使用程式化的基于宏的约定(例如,TRAPS)来标记潜在的安全点。

总的来说,安全点就是指,当线程运行到这类位置时,堆对象状态是确定一致的,JVM可以安全地进行操作,如GC,偏向锁解除等。

0x02 安全点分类

本节摘自https://www.zhihu.com/question/29268019/answer/43762165,作者࿱

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/930918
推荐阅读
相关标签
  

闽ICP备14008679号