性能问答>gc 时候进入安全点停顿时间特别长具体日志如下>
2回复
1年前

gc 时候进入安全点停顿时间特别长具体日志如下



图片.png
请求大家帮忙,看了一下同事的代码比较简单,没有发现什么异常不知道这个问题应该怎么排查呢

2940 阅读
请先登录,再评论

可以先打印一下安全点的日志看看是否存在安全点停顿过长,如果存在则找出具体安全点超时的线程(-XX:SafepointTimeout 和-XX:SafepointTimeoutDelay=2000 (超2000毫秒的日志)),然后再看运行的线程里面是否存在问题,安全点一般是在方法调用,循环跳转,异常跳转这些地方,注意一下这些地方是否有耗时特别长的处理,有一种情况需要特别注意,就是jdk8在用int或更小类型作为索引循环的时候默认是不会防止安全点的,如果是这种情况可以把索引设置为long,这样jvm就会在循环跳转处加上安全点

1年前

应用的堆大小是否足够,如果设置了1G的年轻代,gc时间相对会长一点

1年前