LINUX.ORG.RU

Простой вопрос по ссылкам

 


0

1
foo=function(foo){return foo}({foo: "bar"})
console.log(foo)//{foo: "bar"}
delete(foo)
console.log(foo)//reference error

Останется ли ссылка на объект {foo: «bar»} в памяти? Останется ли сам объект? И главное почему? Прошу ответить на этот вопрос персонально leave (обращаюсь как к пользователю форума, естественно, никоим образом не касаясь его действий в качестве модератора), поскльку, это вопрос из категории «Я познаю мир». Очевидно же, что он его уже познал, поэтому ему несложно будет ответить на него. Прошу никого не отвечать, прежде чем ответит leave, поскольку именно его мнение мне интересно больше всего.

распишусь за всех - язабан.

dib2 ★★★★★
()

Предлагаю обсудить более важный вопрос: «сколько ангелов поместится на острие иглы?»

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Куда девается дырка от съеденного бублика?

thesis ★★★★★
()
Ответ на: комментарий от Suntechnic

Я написал в прошлой теме, что оператор delete в JS удаляет не сам объект, а ссылку на него. Инфа, может, не ахти, но я знаю, что многие новички не в курсе этого. А он снес тему «жж», «я познаю мир»

anonimous
() автор топика
Ответ на: комментарий от Suntechnic

Т.е. он 100% не врубается в то, что он сносит. Прсто ему кажецца.

anonimous
() автор топика
Ответ на: комментарий от anonimous

Я написал в прошлой теме, что оператор delete в JS удаляет не сам объект, а ссылку на него.

Э... А чо, сам объект остается в памяти и продолжает его занимать? Т.е. delete по сути бесполезен? (иногда у меня объекты в js большие и я юзаю его пытаясь экономить память)

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

Объект удаляется потом GC если на него ссылок других нет. Например

a={}
ob={b: a}
delete a
Объект {} останется.

anonimous
() автор топика
Ответ на: комментарий от Suntechnic

Вот в таких вот случаях это может быть не совсем очевидно:

ob={n: 1}
fu=function(ob){return function(arg){return ob[arg]}}
foo=fu(ob)
delete ob
delete fu
console.log(foo("n"))//1 -- в замыкании остлась ссылка на {n: 1}

anonimous
() автор топика

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/d...

Unlike what common belief suggests, the delete operator has nothing to do with directly freeing memory

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

Internet Explorer 6, 7 are known to have a reference-counting garbage collector for DOM objects. For them, a common pattern is known to generate memory leaks systematically

http://www.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-java...

In quite a few discussions online about reclaiming memory in JavaScript, the delete keyword is brought up, as although it was supposed to be used for just removing keys from a map, some developers think you can force de-referencing using it. Avoid using delete if you can.

anonymous
()
Ответ на: комментарий от anonymous

Наверняка ты загуглил, и только потом сюда это выложил. И то, не в кассу, убогонькой. В js алгоритм «Mark-and-sweep»

anonimous
() автор топика

Я искренне не понимаю, зачем ты тащишь на ЛОР каждый второй абзац из каждой первой прочитанной тобой книги. Если у тебя есть вопросы - задавай, но не нужно здесь вести персональный блог.

leave ★★★★★
()
Ответ на: комментарий от leave

Я это не из книг а из опыта тащу. Я делаю это, чтобы проще было разобраться, выявить ошибки в ходе обсуждения. Информация, в данном случае, была полезна и для других юзеров. Этот тред, также свидетельствует об этом — не все это знают. Ничего плохого я в этом не вижу.

anonimous
() автор топика

anonimous, не слушай никого, правильно ты говоришь, эта инфа может быть полезна другим

anonymous
()
Ответ на: комментарий от Deleted

За всех только не надо говорить

anonymous
()
Ответ на: комментарий от leave

Я искренне не понимаю, зачем ты тащишь на ЛОР каждый второй абзац из каждой первой прочитанной тобой книги

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

anonymous
()
Ответ на: комментарий от hcal

Твое мнение не имеет значения, тебя все равно забанят через пару дней.

Deleted
()

А я не прочитал увы ответ от анона

anonymous
()
Ответ на: комментарий от anonimous

Начиная с 2012 года, все современные веб-броузеры оснащаются сборщиками мусора, работающими исключительно по принципу mark-and-sweep

А что делать с браузерами, выпущенными до 2012 года? В них не жаваскрипт уже выполняется?

Legioner ★★★★★
()
Ответ на: комментарий от anonimous

Какой процент таких браузеров реально используется?

Думаю больше, чем процент линукса на десктопе. Мой поинт в том, что в JS бывают разные сборщики мусора и утверждать, что он всегда M&S некорректно. Хотя в принципе обычно никто не заморачивается, конечно.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.