Расположение объекта StringBuilder

Да. Используйте os.path.splitext (см. документация Python 2. X или документация Python 3. X ):

>>> import os
>>> filename, file_extension = os.path.splitext('/path/to/somefile.ext')
>>> filename
'/path/to/somefile'
>>> file_extension
'.ext'

В отличие от большинства ручных разделяющих строку попыток, os.path.splitext будет правильно рассматривать /a/b.c/d как имеющий расширение вместо того, чтобы иметь расширение .c/d, и оно будет рассматривать .bashrc как имеющий расширение вместо того, чтобы иметь расширение .bashrc:

>>> os.path.splitext('/a/b.c/d')
('/a/b.c/d', '')
>>> os.path.splitext('.bashrc')
('.bashrc', '')

21
задан Druid 25 August 2009 в 21:08
поделиться

3 ответа

Нет, StringBuilder - это полностью управляемый ресурс. Вам просто нужно избавиться от всех ссылок на него. Обо всем остальном позаботится сборщик мусора:

StringBuilder sb = ...;
// ... do work
sb = null; // or simply let it go out of scope.

В .NET нет детерминированного удаления (например, C ++, где вы освобождаете память, выделенную для одного объекта). Только сборщик мусора может освободить память. Отказавшись от всех ссылок на объект, вы позволите GC освободить объект, если он захочет. Вы можете принудительно выполнить сборку мусора, вызвав метод System.GC.Collect . Однако не рекомендуется манипулировать с помощью GC, если вы действительно не знаете, что делаете. GC умный. Принуждение к нему редко бывает полезным.

41
ответ дан 29 November 2019 в 20:21
поделиться

Unless the 'excessive memory usage' is a problem, I would leave it as it is and not worry about it.

.NET is in most cases smart enough to avoid doing a garbage collection if you have enough memory available.

2
ответ дан 29 November 2019 в 20:21
поделиться

If you are generating many reports, you could consider re-using a single StringBuilder instead of allocating a new one for each report.

2
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: