很多人会在面试的时候,提到频繁FullGC,那有的面试官就会问,你认为多久一次FullGC算是频繁呢?多久一次算是正常呢?
其实,Full GC的频率取决于多个因素,包括应用程序的性质、堆的大小、内存分配和释放的模式等。正常情况下,Full GC应该是相对较少发生的,因为频繁的Full GC会导致应用程序的性能下降和响应时间延长。
如果一定要给一个指标,那么我可以给一个经验值,拿我们这面一个非常核心的应用来说:
这个应用日常的QPS在5000以上,线上一共有100台左右的机器。
整个集群,也就是100多台4C8G的机器总体的数据是:
平常情况,FullGC次数,一周不超过一次。
业务高峰期,FullGC次数,2小时一次。
FullGC耗时,400-700ms,不超过1秒钟。
YoungGC次数,100+/分钟,YoungGC耗时,20ms左右
堆内存利用率维持在50%以下。
以上,供大家参考,一般来说,日常情况,FullGC不应该超过一天一次的这个频率。