PDA

Просмотр полной версии : Удаляет ли delete объект ИЗ ПАМЯТИ со всеми его потомками?


RFMitrio
28.01.2002, 13:10
Сабж. При использовании delete объект просто исчезает из поля видимости или все-таки он полностью удаляется со всеми своими потомками, освобождая при этом память?

RFMitrio
29.01.2002, 20:17
Что, никто не знает что ли инфы по поводу? Почему я спрашиваю: просто читал, что переменные, объявленные как var внутри функции не видны другим функциям, но в памяти-то сидят при окончании работы функции! Это вам не класс памяти dynamic в Си! А что с объектами???

ish
29.01.2002, 21:06
нет, удаляет только из поля "видимости" скрипта, при этом не освобождая память. хотя когда я смотрел в ИЕ память освобождалась :) в НН нет :)

RFMitrio
29.01.2002, 21:16
Уау, Иш, а как ты это проверяешть ( в ИЕ и НН )? Есть какой-то дебаггер?
--------
То есть если удалить объект и потом создать объект с таким же именем, в конструкторе надо определить обязательную инициализацию свойств, получается. :p

john
29.01.2002, 21:20
Вообщето, никто точно сказать по этому поводу и не сможет,
только предположить,

я смею предположить что да,

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

опять же это предположение,
можно сделать такой пример,

сделаем двухкадровый цикл мувиклипа, и в первом кадре будем создавать новые объекты (штук пятьдесят с пятьдесят строковых полей), в другом кадре их удалять,

пример (аттаченый файл "test_delete.fla")

можно будет посмотреть что происходит с памятью в системе,
другого ничего предположить не могу,....

если не удалять то у меня панять загружалась плюс мег в секунду.....

с удаление вообще стоит на месте,

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

пример (аттаченый файл "test_delete_null.fla")

то же самое.

если есть другие предположения ... мне тоже интересно.

john
29.01.2002, 21:25
2ish

странно.... у мне совершенно никаой разницы не было ни NN ни IE только НН сразу двадцать мег сам "отъел" сволочь :D
еще до запуска флэша.

а так ничего не заметил ... то же самое.

NN 6.2
IE 6.0

ish
29.01.2002, 22:30
я делал так (см аттач)
при нажитии на кнопку "старт" создаются новые обьекты, на "стоп" обьекты создаваться перестают
кнопка "удалить" обьекты удяляет.
фиксируем значение памяти до старта и анализируем:

в плэйере и НН (4.72) r30,
при нажатии на "стоп" память заполняться перестает, по кнопке "удалить" ничего не происходит, значение не меняется.
кстати в бетовском шестом плейре происходит тоже самое

но в ИЕ (5.0) r42
нажимая на кнопку "удалить", явно видно что память принимает свое изначально значение, до создания обьектов

ish
30.01.2002, 00:57
но, заметил еще кое что (для НН и плейера)
при нажатии на кнопку "удалить", обьекты удаляются, но память не меняет своего значения, но если после этого нажать "старт" (начнут заново создаваться обьекты с теми же именами) то значение памяти расти не будет, то есть "новые" обьекты занимают места "старых" которые остались в памяти. после того как количество "новых" созданных обьектов превысит количество "старых" удаленных, память опять начнет заполняться.
ну как правильно заметил john это предположения, хотя, имхо, логичные :)

RFMitrio
30.01.2002, 12:13
Thnx. :) В любом случае, хорошо что происходит перезапись.