Это работает на гораздо более низком уровне. Windows поддерживает поток ядра с низким приоритетом, единственной задачей которого является обнуление содержимого страниц памяти. Называется "нить нить страницы". Эти страницы хранятся в пуле, готовые для использования любым процессом, который генерирует ошибку страницы для зарезервированных, но не зафиксированных страниц. Любой код в Windows выигрывает от этого, а не только от управляемого кода. Целью является безопасность, а не обнуление содержимого ОЗУ отображенных страниц памяти позволит программе шпионить за памятью другого процесса.
Этого не произойдет с вашим массивом, он слишком мал. Он размещается в куче gen # 0, которая всегда будет отображать страницы. Большие массивы, однако, выделяются в куче больших объектов, большой - 85 000 байтов, 8000 байтов для массива double. Выделение LOH может использовать преимущество предварительной инициализации страниц до нуля. Трудно сказать, действительно ли это так, исходный код для этого нигде не доступен. Я бы сказал, что, вероятно, учитывая количество сохраняемых циклов процессора.