Процедуры сбора мусора должны запускаться некоторое время, даже если у вас нет мусора для сбора.
Легко предположить, что, поскольку вы не выделяете или не разыменовываете память, вам не понадобитсясобирать мусор;однако подпрограмма сбора мусора выполняется в независимом потоке и не проверяет возможные потоки в вашем коде, чтобы определить, должен ли он выполняться.
Итак, подпрограмма сбора мусора запускается и не находит мусора для сбора.Это занимает некоторое время.
Кроме того, ваша программа (то есть вся JVM, интерпретирующая ваши классы), возможно, была выгружена из ЦП из-за необходимости операционной системы немедленно обрабатывать некоторые прерывания.Это может произойти даже в многоядерных системах, в зависимости от алгоритмов выбора ядра процессора.Примеры элементов, которые ЦПУ должен обрабатывать немедленно, включают копирование буферов памяти Ethernet в системную память (для предотвращения потери пакетов), захват ввода с клавиатуры и т. Д.
Короче говоря, если вы хотите, чтобы ваш анализ что-то значил, вы имеетечтобы получить реальную статистику по вашему бенчмаркингу, так как все виды внешних элементов могут повлиять на время вашей работающей программы.