Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление объектов класса 
V
    Опции темы
Avtor
Дата 23.10.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Код

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    <title></title>
    <script type="text/javascript" src="../javascripts/treefunc.js"></script>    
    <script language="javascript" type="text/javascript">
//-------------------------
// Вывод дерева на экран:
function changePeriod() {
  tree = new MyTreeClass();
  ...
  tree.draw();
}
//-------------------------
</script>
  </head>
  <body>
    <form name="mainForm" action="javscript:;">
        <select name='period' onChange='javascript:changePeriod()'> 
              <option value='1' selected>1</option>
              <option value='2'>2</option>     
         </select>  
    </form>    
  </body>
</html>

Подскажите как при каждом выборе не плодить объекты класса MyTreeClass (ведь они уничтожатся только при обновлении страницы)?
PM MAIL   Вверх
cruelangel
Дата 23.10.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



Avtor, вынести создание объекта за пределы функции.
PM MAIL   Вверх
Avtor
Дата 23.10.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Меня интересует такой вопрос: в приведенном выше коде память, занимаемая объектом класса MyTreeClass будет расти каждый раз, когда мы меняем значение select'а или сборщик мусора будет удалять старые объекты класса MyTreeClass, оставляя лишь текущий tree?

Это сообщение отредактировал(а) Avtor - 25.10.2007, 21:06
PM MAIL   Вверх
vasac
Дата 26.10.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Цитата(Avtor @  23.10.2007,  20:16 Найти цитируемый пост)
память, занимаемая объектом класса MyTreeClass будет расти каждый раз, когда мы меняем значение select'а или сборщик мусора будет удалять старые объекты класса MyTreeClass, оставляя лишь текущий tree

Может будет удалятся сразу же, а может быть только когда перестанет хватать памяти, а может сборка мусора будет идти через какие-то интервалы времени.
Это знает только сборщик мусора каждого конкретного браузера.
Ну или вы сами можете проверить, смотря занимаемую память в диспетчере задач или ещё в какой-нибудь утилите.
PM WWW   Вверх
ksnk
Дата 26.10.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Можно завести в MyTreeClass какой-нибудьметод clear, чтобы почистить собственный мусор и писать как-нибудь так...
Код

function changePeriod() {
  if(!tree) 
     tree = new MyTreeClass();
  else 
     tree.clear(); // или убрать ветку else, если нету мусора.

все равно это самое tree глобальное ...

Есть еще метод delete.





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Avtor
Дата 26.10.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Огромное спасибо за разъяснения по поводу сборщика мусора. А метод delete - стандартный? И как реализовать tree.clear, ведь насколько я знаю непосредственных способов освобождения памяти в JavaScript нет, здесь реализовано автоматическое освобождение.
PM MAIL   Вверх
vasac
Дата 27.10.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Avtor, delete удаляет свойства объектов, но не переменные.
Впрочем, к вашему случаю он не относится.
Что замена значения переменной, что delete сделают только одно — объект будет недоступен из js-сценария и с полным правом может быть удален из памяти. Когда же именно он будет удален, на это, имхо, напрямую из js повлиять нельзя.
PM WWW   Вверх
Avtor
Дата 27.10.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Спасибо за помощь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.