7.4. Замыкания и утечки памяти

7.4. Замыкания и утечки памяти

В этом разделе речь идет преимущественно об Internet Explorer и его скриптовом движке — JScript. Однако, во-первых, многие из приведенных методик и советов имеют большое значение для других браузеров и их виртуальных JavaScript-машин. Во-вторых, IE на данный момент занимает порядка 60% пользовательской аудитории, поэтому при рассмотрении эффективного программирования на JavaScript выбрасывать его из поля зрения было бы по меньшей мере глупо.

В прошлом утечки памяти не создавали никаких проблем веб-разработчикам. Страницы были предельно простыми, а переход с одной на другую был единственным нормальным способом для освобождения всей доступной памяти. Если утечка и происходила, то была настолько незначительна, что оставалась незамеченной.

Современные веб-приложения должны разрабатываться с учетом более высоких стандартов. Страница может выполняться в течение часов без дополнительных переходов по сайту, при этом она будет сама динамически запрашивать новую информацию через веб-сервисы. Скриптовый движок испытывают на прочность сложными схемами отработки событий, объектно-ориентированным JScript и замыканиями, производя на свет все более мощные и продвинутые приложения. При этом, учитывая некоторые другие особенности, знание характерных шаблонов утечек памяти становится все более необходимым, даже если они были раньше спрятаны за механизмом навигации по сайту.

Хорошей новостью будет то, что шаблоны утечек памяти могут быть легко обнаружены, если знать, где их искать. Методы устранения наиболее тяжелых из них подробно описаны, и они требуют лишь небольшого количества дополнительных усилий. Хотя некоторые страницы могут по-прежнему «падать» из-за небольших утечек, самые значительные утечки могут быть легко удалены.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Замыкания

Из книги Разгони свой сайт автора Мациевский Николай

Замыкания Замыкания очень часто являются причиной утечек из-за того, что они создают циклические ссылки практически без ведома программиста. Ведь не так очевидно, что параметры родительской функции могут быть «заморожены» во времени, на них может быть создана ссылка,


Постраничные утечки

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю


Псевдо-утечки

Из книги Цифровой журнал «Компьютерра» № 86 [12.09.2011 — 18.09.2011] автора Журнал «Компьютерра»

Псевдо-утечки Очень часто действительное и ожидаемое поведение некоторых API может привести к тому, что ошибочно называется утечками памяти. Псевдо-утечки практически всегда появляются на самой странице при динамических операциях и очень редко бывают замечены вне


Проектируем утечки

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Проектируем утечки Каждый веб-разработчик составляет персональный список примеров кода, для которого известно, что он «течет», и пытается найти для каждого случая достойное решение, когда обнаруживает источник проблемы. Это весьма полезно, и именно по этой причине


Утечка памяти

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

Утечка памяти Если вы имеете опыт программирования на языке C++, то у вас в связи с предыдущими примерами программного кода могут возникать вопросы. В частности, следует обратить внимание на то, что метод Main() типа HelloClass не имеет явных операторов уничтожений ссылок c1 и с2.Это


DLP: как защитить секреты от утечки Виктор Ивановский

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

DLP: как защитить секреты от утечки Виктор Ивановский Опубликовано 15 сентября 2011 года"Википедия" представляет нам целых четыре варианта расшифровки, два из которых — Digital Light Processing и Disneyland Paris — мы отметаем из соображений элементарной логики, а к двум другим — Data Loss Prevention и


2.5. Тип памяти EXAMPLE

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич


2.8. Тип памяти CSV

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк


7.5.2. Выравнивание памяти

Из книги Яндекс Воложа [История создания компании мечты] автора Дорофеев Владислав Юрьевич

7.5.2. Выравнивание памяти Хотя инструмент Electric Fence очень помог в обнаружении второй проблемы в коде, а именно — вызова strcpy(), переполнившего буфер, первое переполнение буфера найдено не было.Проблему в этом случае нужно решать с помощью выравнивания памяти. Большинство


13.2. Отображение в памяти

Из книги автора

13.2. Отображение в памяти Операционная система Linux позволяет процессу отображать файлы в их адресное пространство. Такое отображение создает взаимно однозначное соответствие между данными в файле и в отображаемой области памяти. Отображение в памяти обладает рядом


20.4.2. Объем памяти

Из книги автора

20.4.2. Объем памяти Иногда нужно указать объем ОЗУ, отличный от того, который имеется на самом деле. Например, у вас чипсет Intel 810 с интегрированной видеоплатой, тогда вам нужно указать объем ОЗУ на 1 Мб меньше (а иногда даже на 2 Мб). Это связано с аппаратной особенностью


5.1.2. Модель памяти

Из книги автора

5.1.2. Модель памяти При совместном использовании сегмента памяти один процесс должен сначала выделить память. Затем все остальные процессы, которые хотят получить доступ к ней, должны подключить сегмент. По окончании работы с сегментом каждый процесс отключает его.


7.4.3. Использование памяти

Из книги автора

7.4.3. Использование памяти Файл /proc/meminfo хранит сведения об использовании системной памяти. Указываются данные как о физической памяти, так и об области подкачки. Во второй и третьей строках значения даны в байтах, в остальных строках — в килобайтах. Приведем пример:% cat


Выделение памяти

Из книги автора

Выделение памяти При обсуждении формата исполняемых файлов и образа программы в памяти мы отметили, что сегменты данных и стека могут изменять свои размеры. Если для стека операцию выделения памяти операционная система производит автоматически, то приложение имеет


Провал в памяти

Из книги автора

Провал в памяти Сегодняшний «Яндекс» — это глобальная централизованная сеть. Это тысячи километров выделенных каналов, соединяющих воедино десятки тысяч серверов, которые обрабатывают за доли секунды ежедневно около 150 млн запросов, формулируемых около 100 млн