jvm Safe Point

VM Threads,专门用来执行一些特殊的VM Operation,比如分派GC,thread dump等,这些任务,都需要整个Heap,以及所有线程的状态是静止的,一致的才能进行。所以JVM引入了安全点(Safe Point)的概念,想办法在需要进行VM Operation时,通知所有的线程进入一个静止的安全点。
需要进入安全点的vm operation
1:JIT相关,比如Code deoptimization, Flushing code cache ;
2:Class redefinition (e.g. javaagent,AOP代码植入的产生的instrumentation) ;
3:Biased lock revocation 取消偏向锁 ;
4:Various debug operation (e.g. thread dump or deadlock check);
5:gc (主要是yang gc 和并发gc中的标记节点)
【jvm Safe Point】查看stw消耗的时间以及触发的原因jvm参数
-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintSafepointStatistics -XX: PrintSafepointStatisticsCount=1 -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/dev/shm/vm.log

    推荐阅读