Вы используете неуправляемый код? Если Вы не используете неуправляемый код, по данным Microsoft, утечки памяти в традиционном смысле не возможны.
Память, используемая приложением, не может быть освобождена однако, таким образом, выделение памяти приложения может вырасти в течение срока действия приложения.
От , Как определить утечки памяти в общеязыковой среде выполнения по Microsoft.com
, утечка памяти А может произойти в приложении Платформы.NET, когда Вы используете неуправляемый код в качестве части приложения. Этот неуправляемый код может пропустить память, и время выполнения Платформы.NET не может решить ту проблему.
Кроме того, проект, может только казаться, имеет утечку памяти. Это условие может произойти, если много больших объектов (таких как Объекты dataTable) объявляются и затем добавляются к набору (такому как DataSet). Ресурсы, что эти собственные объекты никогда не могут выпускаться, и ресурсы, остаются в живых для целого выполнения программы. Это, кажется, утечка, но на самом деле это - просто признак способа, которым память выделяется в программе.
Для контакта с этим типом проблемы, можно реализовать IDisposable. Если бы Вы хотите видеть некоторые стратегии контакта с управлением памятью, я предложил бы искать IDisposable, XNA, управление памятью , поскольку разработчики игр должны иметь более предсказуемую сборку "мусора" и так должны вынудить GC сделать свою вещь.
Одна частая ошибка не состоит в том, чтобы удалить обработчики событий, которые подписываются на объект. Подписка обработчика событий будет препятствовать объекту быть переработанной. Кроме того, смотрите на использование оператор, который позволяет Вам создавать ограниченный объем в течение времени жизни ресурса.
Вот регулярное выражение для того, что вы ищете:
(^|\s)(cows)(\s|$)
В JS замена выглядит так:
myString.replace(/(^|\s)(cows)(\s|$)/ig, '$1<b>$2</b>$3');
Аккуратно заключена в функцию многократного использования:
function updateHaystack(input, needle) {
return input.replace(new RegExp('(^|\\s)(' + needle + ')(\\s|$)','ig'), '$1<b>$2</b>$3');
}
var markup = document.getElementById('somediv').innerHTML;
var output = updateHaystack(markup, 'cows');
document.getElementById('somediv').innerHTML = output;
findstring: /(^|\s)(cows)(\s|$)/ig
newstring: '$1<b>$2</b>$3'
Маркеры \ b предназначены для "границ слова"; флаги / ig предназначены для игнорирования регистра и глобального сопоставления, соответственно.
Использование захватов () и затем $ 1 / $ 2 / $ 3 в тексте новой строки так, чтобы заглавные буквы и интервалы совпадали сохранено.
var needle = 'cows';
var regexp = new RegExp('(^|\s)('+needle+')(\s|$)', 'ig');
var old_string = 'cows at www.cows.com, milk some COWs';
var new_string = old_string.replace(regexp, '<b>$1$2$3</b>');