Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Утечки памяти: как сделать ? (https://javascript.ru/forum/events/4911-utechki-pamyati-kak-sdelat.html)

Draeden 29.08.2009 13:02

Утечки памяти: как сделать ?
 
Ни разу не программировал на языках с автоматическим освобождением памяти, как в javascript. Якобы этот язык содержит такие конструкции которые при неправильном использовании создадут утечки памяти. Я хочу проверить свои скрипты на наличие подобных багов, поэтому, для начала, попытался специально написать такой код который породит утечку памяти. Это оказалось не так просто: банальные циклические ссылки Firefox распознаёт очень быстро и удаляет все лишние объекты.

Поскольку я так и не смог создать утечку памяти, то хотел бы, чтобы кто нибудь написал простой код на javascript который создаст утечку памяти. Единственная оговорка: javascript код должен порождать утечку памяти из за особенностей языка javascript, а не из за ошибок в коде браузера. Другими словами будем считать, что браузер интерпретирует и выполняет javascript код идеально.

Semen 29.08.2009 14:45

Знакомый ник!!! :) Знаком по поверхностям ;-) ?

Gvozd 29.08.2009 17:23

Цитата:

Сообщение от Draeden
Другими словами будем считать, что браузер интерпретирует и выполняет javascript код идеально.

в таком случае утечек не будет
все утечки являются багос браузера, причем обычно на стыке JS и не-JS частей страницы

Draeden 29.08.2009 22:16

Semen, да, мир тесен :) Правда я больше их не делаю - надоело :)
Gvozd, другими словами я не смогу сделать несколько бесполезных объектов которые нужны только друг другу, чтобы эти объекты через пару секунд не удалил браузер ? В таком случае javascript очень хороший язык :)

Тогда переформулирую вопрос. Какие основные паттерны кода не любят браузеры ? IExplorer, как я догадываюсь, не любит язык javascript в целом (как и html, css и пр.) :) А что в случае правильных браузеров: firefox, opera, google chrome ? Особенно интересно увидеть код который не понравится Firefox, т.к. этот код я так и не придумал :)

Андрей Параничев 29.08.2009 22:22

Draeden,
Что вы имеете в виду под "не понравится"?

Octane 29.08.2009 22:30

Цитата:

Сообщение от Draeden
IExplorer, как я догадываюсь, не любит язык javascript в целом

IE использует JScript, который хоть и похож на JavaScript, но всетаки другой язык со своими достоинствами и недостатками.

Парится об утечках памяти нужно только для необновленных версий IE6, IE7. Например, можно назначить огромное количество обработчиков событий так, чтобы в замыкание попали ссылки на DOM-элементы, тогда при каждом обновлении страницы, браузер будет занимать все больше и больше памяти. Так же есть специальная программа для обнаружения утечек памяти в Internet Explorer.

Draeden 30.08.2009 12:55

Андрей Параничев, "не понравится" значит, что Firefox допустит утечку памяти.
Octane, там даже не javascript ? Впрочем на то он и эксплорер :)

JSprog 30.08.2009 16:39

Цитата:

Сообщение от Draeden
там даже не javascript ?

JavaScript там тоже есть=)

Octane 30.08.2009 17:01

Цитата:

Сообщение от JSprog
JavaScript там тоже есть=)

В Internet Explorer нет JavaScript, он использует свой ECMAScript-подобный язык JScript. Только благодаря тому, что у языков общие корни и похожий синтаксис, мы можем писать практически одинаковый код для W3C-совместимых браузеров и Internet Explorer.

JSprog 30.08.2009 17:41

Ага...не в одной книге по JS об этом не говорилось
Ты хоть как врёшь


Часовой пояс GMT +3, время: 23:55.