Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Очистка памяти


Автор: maxkazar 28.9.2004, 15:37
Как из существующего массива (объекта) удалить элемент при этом удалить его из памяти?
(ведь если элемент объекта не удалить из памяти будет происходить утечка памяти так же?)

Автор: GoodBoy 28.9.2004, 15:43
maxkazar
А это так актуально???? :-)))

Автор: maxkazar 28.9.2004, 15:51
не то слов).....
смысл такой, что скрипт будет генерит всевозможные объекты без обновления странички, соответсвенно если не очищать память то через определенное время наверника будет нехватка памяти и т.п.

Автор: GoodBoy 28.9.2004, 16:04
если сделать
Код
obj = null;
то по идее память должна освободиться...

Автор: maxkazar 28.9.2004, 16:16
Вот именно что только по идеи.
простой пример

alert(window.ggg) //Выводит на экран undefined

window.ggg="test"
alert(window.ggg) //Выводит на экран Test

window.ggg=null
alert(window.ggg) //Выводит на экран null


Я так понимаю что null это тоже некоторое значение означающие "ничего" и при выполнении присвоения null некоторой переменной, память на самом деле не очищаеться, а происходит запись значения null или же не так?

Автор: GoodBoy 28.9.2004, 16:24
запусти-ка вот это:
Код
<script>
window.ggg="test"
alert(window.ggg)
alert(window.ggg.length)

window.ggg=null
alert(window.ggg)
alert(window.ggg.length)
</script>

:-))))))))

Автор: Aliance 28.9.2004, 16:42
Цитата(maxkazar @ 28.9.2004, 16:16)
так понимаю что null это тоже некоторое значение означающие "ничего" и при выполнении присвоения null некоторой переменной, память на самом деле не очищаеться, а происходит запись значения null или же не так?

Нет, это, можно сказать, ноль. Ничего. Но не слово, а значение.

Автор: Sardar 28.9.2004, 22:02
Для этих целей существует не часто используемая команда delete:
Код
var test=["bla1","bla2"];
delete test[0];
//впрочем это эквивалентно
test[1]=undefined;
alert(test);

Заметь что количество элементов в массиве по прежнему 2, впрочем память реально освобождается.

Встречный вопрос, где это тебе понадобилось? В JS есть сборщик мусора, когда на значение больше нет ссылко, оно удаляется:
Код
test=[45,4323,2354]; //имеем массив
test=67; //массив удаляется из памяти автоматически


Автор: maxkazar 13.10.2004, 16:30
Да вобщем то на счет ссылок....ты прав, а вот delete может работать только с локальными переменными но не как не с глобальными ((....хотя единственный выход здесь, это же конечно косить все ссылки...

Цитата
Встречный вопрос, где это тебе понадобилось?


Затеял проектик небольшой)...хочу написать нечто похожее на объектную модель, позволяющую создавать клиентов наподобие Windows приложений. Прямой аналог Delphi. Т.е. вы запускаете среду разработки, кидаете там всякие элементы пишите обработчики событий (и все на JScript и DHTML) и вот оно - готовый клиент, который никогда не перезагружаеться и визуально похож на обыкновение Windows приложение)!

Для чего это надо?....учень удобная штука для разработки бизнес приложение через Веб


Автор: Alx 13.10.2004, 17:08
а нам покажешь? rolleyes.gif

Автор: GoodBoy 13.10.2004, 17:14
Цитата(maxkazar @ 13.10.2004, 17:30)
Затеял проектик небольшой)...хочу написать нечто похожее на объектную модель, позволяющую создавать клиентов наподобие Windows приложений. Прямой аналог Delphi. Т.е. вы запускаете среду разработки, кидаете там всякие элементы пишите обработчики событий (и все на JScript и DHTML) и вот оно - готовый клиент, который никогда не перезагружаеться и визуально похож на обыкновение Windows приложение)!

Вай, щщщщщщщщщяйтан!!!!!!!!!!! А зачем????? :-)))))))))

Автор: Sardar 13.10.2004, 23:34
maxkazar звучит красиво smile.gif
Идеи и результаты пости сюда, будем "жевать" мысль все вместе smile.gif

Автор: ElectricalStorm 14.10.2004, 00:36
это наверно Win Forms навеяло ?

Автор: maxkazar 14.10.2004, 08:48
Откуда идея появилась хотите спросить)!...да на самом деле все просто.....Я занимаюсь тем что разрабатываю "тонких" клиентов. Постоянно сталкиваюсь с одной и той же проблемой. Не хватает функциональности(((. Переходить на "толстый" клиент - нельзя...Вот инадо что то изобрести, некого мутанта "тонкого" клиента, подкормить его немного (иными словами добавить функциональности).

Про Win Forms читал, но это немножко не то.....Я не ограничиваюсь окошками на слоях в стиле Windows.

Вобщемто я ставил перед собой задачу разработать базовую объектную модель. Голову морочить не стал (не стал изобретать колесо), а просто начял интерпретировать объектные подходы на языке JScript. За аналог взял объектную модель Delphi (давно с ним знаком). Вобщемто что то уже есть, а по точнее пару классов TObject и TComponent. Для тех кто не знаком с ними, поясню. Данный классы обеспечиваюь создание и управление объектами.


Часто возникающий вопрос у посителей данной ветки "А зачем все это?" поясню ещё раз

Разрабатываемая объектная модель будет работать только с продуктами от Microsoft (IE). Основаю задача - это разработка "тонких" клиентов по функциональности не уступающих "толстым". Представь те сами Window Application но на Web...Вам не надо закачевать какието исполняемые файлы на ваш компьютер, устанавливать COM объекты (что нарушает безопасности), а просто вы заходите на сайт и у вас тоже самое Windows Application но на вебе). А самое главное, это же сделать жизнь легче разработчикам.
Конечный результат будет представлять из себя IDE среду и набор классов.


Автор: Gregof 14.10.2004, 09:10
maxkazar глянь сюда http://bindows.net
посмотри что другие делают

Автор: maxkazar 14.10.2004, 09:49
Наконец то меня поняли.....вот как раз это (bindows.net) я и хочу сделать

Автор: GoodBoy 14.10.2004, 10:51
Цитата(maxkazar @ 14.10.2004, 10:49)
вот как раз это (bindows.net) я и хочу сделать

Дык уже есть!!! wink.gif

Автор: Gregof 14.10.2004, 10:54
Сильно, сложно, а главное много...
Но как говориться доргу осилит идущий, так что давай, а мы на форуме постараемся тебе помочь чем сможем.
Я уже пол года работаю с библеотекой bindows, так что немного поднаторел в этом деле, если что смогу кое-что подсказать, или наоборот покритиковать.

Цитата
Дык уже есть!!!

Дык она денег просит !!! smile.gif

Думаю пора создать отдельную тему.

Автор: Alx 14.10.2004, 12:41
народ, я ещё не очень в таких делах секу... rolleyes.gif может у кого-нить найдётся время объяснить мне, что всё это такое и для чего оно делается. rolleyes.gif

Цитата(maxkazar @ 13.10.2004, 16:30)
объектную модель, позволяющую создавать клиентов наподобие Windows приложений

чё такое объектная модельи клиенты?? stena.gif

notify.gif

Автор: ElectricalStorm 14.10.2004, 16:28
прикольная штука... работы много там ...

ALEXANDRO - купи какую-нибудь книжку по программирванию

Автор: Alx 14.10.2004, 17:15
Цитата(ElectricalStorm @ 14.10.2004, 16:28)
купи какую-нибудь книжку по программирванию

чё-то у меня их слишком много... biggrin.gif

Автор: maxkazar 15.10.2004, 09:46
Мысли в слух......на счет защиты JScript кода.....самый просто выход это ОБФУСКАТОР

Автор: Sardar 15.10.2004, 10:40
maxkazar да, ну еще ИЕ как то пытается код кодировать. http://http;//vingrad.ru/@sergej.z написал не плохой компрессор-обфускатор JS, спроси его.

Автор: sergejzr 15.10.2004, 13:35
Цитата(maxkazar @ 14.10.2004, 08:49)
Наконец то меня поняли.....вот как раз это (bindows.net) я и хочу сделать

Интересная штука smile.gif Как я понял, она за деньги. А вариант free Source имеется? И демку какую нибудь.


Цитата(maxkazar @ 15.10.2004, 08:46)
Мысли в слух......на счет защиты JScript кода.....самый просто выход это ОБФУСКАТОР

Цитата(Sardar @ 15.10.2004, 09:40)
не плохой компрессор-обфускатор JS, спроси его.


http://www.iwi-iuk.org:8081/tests/optjs/doall.php
smile.gif Скажу сразу. Если проект будет "закрытым" или за деньги, то не хочу, чтобы его использовали.
А смысл его в ограничении веса скрипта и уменьшения траффа.

Автор: maxkazar 5.11.2004, 12:36
Дело идет полным ходом....готовы базовые объекты и пару базовых компонентов (кнопки, панели, картинки, комбобоксы и т.п.). Закончил TreeView и сразу же появилась проблемка. Если количество элементов TreeView больше 1000 начинаются реальные тормоза. Выход один - использовать подкачу веток TreeView, т.е. при развертывание какой нить ветки, происходит подкачка содержимого ветки. Мне кажется, что это единственный выход. Но вот встала проблема как!. Думаю что лучше всего для этого подойдет com объект Msxml2.XMLHTTP соответствено формат передачи данных XML, потому что:
1. объект Msxml2.XMLHTTP уже встроен в операционну систему Windows и по этому на клиенте дополнительный операций производить не надо;
2. для анализа XML документа есть уже отличный com объект Msxml2.DOMDocument, который также встроен в систему и предоставляет достаточно мощьный интерфейс работы с XML документами;
3. вобщемто все приемущества использования XML).

И в дальнейшем считаю, что при разработке клиентских компонентов необходимо придерживаться следующего правила

Получаем только то, что видим!

т.е. клиент получает только необходимую информацию для отображения. Все остальное реализуется с помошью механизма подкачки. Например тот же самый текс в окне скрола. Я не вижу смысла полностью загружать весь текс! Достаточно загрузить только ту часть текса которая отображаеться в окне и при прокрутке подгружать необходимый текс.

Автор: Sardar 5.11.2004, 14:31
Цитата(maxkazar @ 5.11.2004, 11:36)
и при прокрутке подгружать необходимый текс.

Для текстовых полей это не нужно.

На счет XML - в Опере не бдует работать(скоро будет) smile
Можно извратится и подгружать нет XML, a сразу HTML. Конечно не будет XPath и прочего, но структура останется прежней, ее можно сразу же воссоздавать где угодно. Увы ккопирывание нод между докуемнтами не поддерживается ни одним бразуером(кривость от W3C...).

Автор: maxkazar 9.11.2004, 11:30
Столкнулся ещё с одной проблемой. Слишком уж много памяти жрет этот IE((.
Пробывал использовать HTA, там теже самые странички используют намного меньше памяти да и сам механизм HTA больше подходит для реализации данной идей, вот только недостатком HTA наверное можно считать выскакивающее окно безопасности((

Автор: Gregof 9.11.2004, 12:35
Цитата(maxkazar @ 9.11.2004, 11:30)
Слишком уж много памяти жрет этот IE((

Это уж точно, у меня временами отъедает до 90 метров. Просто не лезет ни в какие ворота.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)