JVM safe point
safe point 表示线程运行到一些"点"时,可以确定线程内存的一些状态,可以方便JVM 做一些统计;
safe point 出现位置:
1、循环结束
2、方法返回前
3、调用发放的call之后
4、抛出异常的位置
选择这些点来作为safe point 点主要是方便 JVM 做一些记录,这些点的记录需要空间少;
safe point 使用场景:
1、GC pauses
2、flushing code cache
3、code deoptimization
4、class redefinition (hot swap or instrumentation)
5、biased lock revocation
6、various debug operation (deadlock check or stacktrace dump)
其中GC 使用场景,如果一个线程长时间不能进入 safe point 可能会导致 JVM 的GC线程一直在等待未进入safe point 的线程,而不能GC,JVM就freezen了。
JVM 部分文章主要参考于博客
https://blog.csdn.net/ITer_ZC/article/category/2758863