YGC
YGC频次暂且忽略,问题主要集中在gc耗时上面。想要解决YGC耗时问题,首先要搞清楚YGC的耗时节点。(据我所知的YGC问题,还没有逃出过这些维度)
存活对象扫描、标记时间
存活对象copy to S区,晋升到Old区
等待各线程到达安全点时间
GC日志输出
操作系统活动(swap)
1、等待线程到达安全点
GC发生时,程序是会STW的(Serial, ParNew, Parallel Scanvange, ParallelOld, Serial Old全程都会STW,CMS等在初始标记重新标记阶段也会STW), JVM这时候只运行GC线程,不运行用户线程。
那JVM具体要在哪里,在什么时间点STW呢? 答:安全点。
因此,GC时,程序需要运行到最近的一个安全点(方法返回、循环结束、异常抛出等位置)停下来,安全点日志前面文章也提到了:
如果发现 spin时间段表现异常&#