При просмотре журналов GC для приложения, построенного на Netty, я заметил, что были события GC, помеченные как System.gc (), например:
[GC (System.gc()) [PSYoungGen: 63506K->64K(637952K)] 126048K->62605K(2036224K), 0.0035823 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
[Full GC (System.gc()) [PSYoungGen: 64K->0K(637952K)] [ParOldGen: 62541K->62541K(1398272K)] 62605K->62541K(2036224K), [Metaspace: 82261K->82261K(1120256K)], 0.1926316 secs] [Times: user=0.47 sys=0.00, real=0.19 secs]
При поиске кодаи из используемых библиотек мы определили, что эти вызовы поступают от Netty (окончательная версия 4.1.21).
Я не смог найти ничего в документации или поиске, который ссылается на это.Могу ли я где-нибудь прочитать о том, почему это делается и какое влияние может оказать отключение явного GC?Все, что мне удалось найти, это эта презентация , которая отмечает кое-что о System.gc (), но не имеет никакой полезной информации об этом.
В событиях, которые я видел, казалось, что GCбыло выполнено в неоптимальное время и что он выполнил полный сборщик мусора, когда ничего не требовалось, и, по-видимому, без необходимости перемещал объекты в старое поколение.
ИСПРАВЛЕНИЕ : Первоначально это объяснялосьНетти, но при дальнейшей проверке выяснилось, что это не так.Netty не звонит System.gc ().