Сборка мусора происходит только при нехватке памяти, поэтому простое наблюдение за использованием вашей памяти не означает, что произошла утечка памяти , и в этом коде я не вижу, как может быть допустимая утечка. Вы можете добавить
GC.Collect();
GC.WaitForPendingFinalizers();
для двойной проверки, но не должны оставлять это в работе.
Редактировать: кто-то в комментариях указал, что Ping является Одноразовым.не вызывая утилизацию может привести к утечкам, которые в конечном итоге будут очищены, но это может занять много времени и вызвать проблемы, не связанные с памятью.