Итак, подведем итог вашему вопросу: вы хотите, насколько это возможно, избежать проблем с ошибкой IE6 GC. Эта ошибка имеет две причины:
- Сборка мусора происходит раз в столько выделений ; следовательно, чем больше выделений вы сделаете, тем чаще будет работать GC;
- Чем больше объектов у вас «в воздухе», тем больше времени занимает каждый запуск Сборки мусора (поскольку он пролистает весь список объектов, чтобы увидеть, какие из них помечены как мусор).
Решение проблемы 1, по-видимому, заключается в следующем: уменьшить количество выделений; назначайте новые объекты и строки как можно меньше.
Решение проблемы 2, по-видимому, заключается в следующем: уменьшить количество «живых» объектов; удаляйте свои строки и объекты, как только они вам больше не нужны, и создавайте их заново при необходимости.
В определенной степени эти решения противоречивы: сохранение небольшого количества объектов в памяти повлечет за собой большее выделение и перераспределение. И наоборот, постоянное повторное использование одних и тех же объектов может означать сохранение большего количества объектов в памяти, чем это строго необходимо.
Теперь на ваш вопрос. Будете ли вы сбрасывать объект, создавая новый или удаляя все его свойства: это будет зависеть от того, что вы хотите с ним делать потом.
Возможно, вы захотите присвоить ему новые свойства:
- Если вы сделаете это немедленно, тогда я предлагаю сразу назначить новые свойства и сначала пропустить удаление или очистку. (Убедитесь, что все свойства либо перезаписаны, либо удалены!)
- Если объект не будет использоваться немедленно, но будет повторно заполнен на более позднем этапе, тогда я предлагаю удалить его или присвоить ему значение null, а позже создать новый.
Не существует быстрого, простого в использовании способа очистки объекта JScript для повторного использования, как если бы это был новый объект - без создания нового. Это означает, что краткий ответ на ваш вопрос «Нет», как говорит Джтомпсон.