Если я не ошибаюсь пустая переменная string занимает минимум 256 байт(если в ASCII). А в скрипте мы имеем 2-х мерный массив из этих сток, получается что у нас таблица из строк 30к на 2, итого 60к строк. Каждая по 256 байт. Простая математика: 60000*256 = 15 360 000 байт = 15 Мб.
Освобождается ли память? Включаем/выключаем скрипт 10 раз и смотрим увеличилось ли использование памяти на 150 Мб, это буде заметно.
Говорить об оптимальности использования ресурсов системы не стоит, здесь и так понятно