福哥答案2020-09-24:#福大大架构师每日一题#
此答案来自知乎:
一般都是,但是要是记录比较详细的性能定位指标,都会导致进入 safepoint,从而降低了线上应用性能。
例如 jstack,jmap打印堆栈,打印内存使用情况,都会让 jvm 进入safepoint,才能获取线程稳定状态从而采集信息。
同时,JMX暴露向外的接口采集信息,例如使用jvisualvm,还会涉及rpc和网络消耗,以及JVM忙时,无法采集到信息从而有指标断点。这些都是基于 JMX 的外部监控很难解决的问题。
所以,推荐使用JVM内部采集 JFR,这样即使在JVM很忙时,也能采集到有用的信息。
评论