JVM-安全点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM-安全点相关的知识,希望对你有一定的参考价值。

参考技术A

Total time for which application threads were stop 超级长时间,这行日志代表什么,以及为什么时间会这么长

当GC发生时,每个线程只有进入了SafePoint才算是真正挂起,也就是真正的停顿,这个日志的含义是整个GC过程中STW的时间,配置了 -XX:+PrintGCApplicationStoppedTime 这个参数才会打印这个信息。

重点: 第一个 2.81 seconds 是JVM启动后的秒数,第二个 2.6 seconds 是 JVM发起STW的开始到结束的时间。特别地,如果是GC引发的STW,这条内容会紧挨着出现在GC log的下面。

有关安全点的详细说明,请移步:
JVM源码分析之安全点safepoint
[Java JVM] Hotspot GC研究- GC安全点 (Safepoint&Stop The World)

等待所有用户线程进入安全点后并阻塞,做一些全局性操作的行为。

配置 -XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1 参数,虚拟机会打印如下日志文件:

RevokeBias、BulkRevokeBias、偏向锁取消情况。
Deoptimize、
G1IncCollectionPause GC GC 执行情况。

分析 -XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1 产生的日志信息基本上STW的原因都是RevokeBias或者BulkRevokeBias。这个是撤销偏向锁操作,虽然每次暂停的 时间很短,但是特别频繁出现也会很耗时。

一些高并发的系统中,禁掉JVM偏向锁优化,可以提升系统的吞吐量 。禁用偏向锁的参数为: -XX:-UseBiasedLocking

R大分析类似情况
调优建议
各种JVM参数说明
stw分析
R大的博客
安全点 stw说明
偏向锁

以上是关于JVM-安全点的主要内容,如果未能解决你的问题,请参考以下文章

JVM安全点

JVM Safepoint 安全点

JVM源码分析之安全点SafePoint

JVM垃圾回收安全点Safe Point

JVM的Stop The World,安全点,黑暗的地底世界 V2.0

通过 JVM 日志来进行安全点分析