在我之前的工程中,使用 EMR-OSS 将 阿里云对象存储 OSS 与 Spark 集群进行了整合,采用 OSS 作为存储实现,在一次性能问题排查过程中,发现 EMR-OSS 连接器的代码中有对 System.gc()
的显式调用,该调用导致频繁 FullGC,在修复前我先使用 JVM 参数 -XX:+DisableExplicitGC
规避了频繁 FullGC 的问题,后提交了 PR 对该问题进行修复。
注:设置 -XX:+DisableExplicitGC
可能影响直接内存回收,使用该选项须谨慎。
Reference
Remove explicit calls to System.gc() #369
GCeasy
Impact of setting -XX:+DisableExplicitGC when NIO direct buffers are used - Stack Overflow