1、查看源码最终调用的本地方法JVM_GC()方法
2、该方法实现:
a、会判断DisableExplicitGC是否开启,默认开始,该开关是JVM入参,用例控制是否允许用户调用system.gc方法。-XX:+DisableExplicitGC
b、紧接着调用:Universe::heap()->collect(GCCause::_java_lang_system_gc);
heap方法,需要到对应的垃圾回收器内查看,不同的垃圾回收器有不同的实现。我们这次仅仅只针对G1.
c、调用should_do_concurrent_full_gc()判断是否要进行并发fullGC ExplicitGCInvokesConcurrent参数控制
d、是否要真正GC还需要一些策略的校验