Нет, похоже, вам не нужно беспокоиться об утечке памяти.
На машине с несколькими гигабайтами памяти потребление 13 КБ памяти ... тривиально мало. Если это неуклонно растет и никогда не уменьшается, то у вас есть утечка, в противном случае вы в порядке.
Стоит помнить, что строки в CLR являются инвариантными, поэтому каждый раз, когда вы «меняете» строку, создается новая копия, и память, выделенная для старой версии, помечается как неиспользуемая. Таким образом, большинство программ используют небольшую часть памяти только при обычном повседневном использовании: это нормально, и это только то, о чем нужно беспокоиться в граничных условиях, таких как очень узкие циклы или огромные коллекции или и то, и другое.
Даже в этом случае сборщик мусора .NET отлично справляется с тем, чтобы время от времени очищать и консолидировать эту старую память.
В некоторых ситуациях для строк (и других объектов) может быть выделена память (и другие ресурсы, такие как дескрипторы файлов), которые не освобождаются после использования, и именно здесь вам необходимо использовать Dispose()
.