JavaScript имеет неупорядоченное хранение памяти?

Хорошо, я думаю, я знаю, что пошло не так. Ошибка случается, потому что я неправильно подумал о проблеме. Поскольку я использую Eventtime, окна закрываются, когда приходит событие, которое имеет временную метку, превышающую время окончания окна. Когда поток заканчивается, элемент больше не поступает. Отсюда следует, что окно никогда не закрывается.

23
задан nicael 11 May 2014 в 18:55
поделиться

4 ответа

Вы не можете выделить память. Вы можете создавать объекты. это то, что делает new.

Теперь javascript - это странное существо: функции также являются объектами в javascript. Так что это означает, что вы можете создать довольно много всего, используя new.

Итак, оператор new означает, что создается новый объект.

Javascript также собирает эти переменные, как это происходит в Java. Поэтому, если вы знаете Java, вам будет легко проводить параллели.

ура,

jrh

PS: когда вы выделяете объекты, вы действительно выделяете память. Только вы не делаете это явно. Вы можете выделить массив и заставить его вести себя как буфер памяти, но это резко снизит производительность javascript: массивы javascript не являются буферами в памяти, они также являются объектами (как и все остальное).

24
ответ дан 29 November 2019 в 01:52
поделиться

Нет, вам не нужно и не может выделять память. Интерпретатор JavaScript делает это автоматически.

3
ответ дан 29 November 2019 в 01:52
поделиться

В JavaScript есть сборка мусора, и она решается за вас.

Однако вы можете помочь с этим, используя оператор delete , где это необходимо.

Из ] Рекомендации Apple по кодированию JavaScript :

Так же, как вы использовали оператор new для создать объект, вы должны удалить объекты, когда вы закончите с их, например:

удалить myObjectVariable;

Среда выполнения JavaScript автоматически мусор собирает объекты, когда их значение установлено равным нулю. Однако установка объект равным нулю не удаляет переменная, которая ссылается на объект из памяти. Использование delete гарантирует, что эта память восстанавливается дополнительно в память, используемую объектом сам. (Также легче увидеть места, где ваши ассигнования и высвобождения неуравновешиваются, если вы явно вызвать удаление.)

Стив

7
ответ дан 29 November 2019 в 01:52
поделиться

Хммм для меня звучит так, будто вы пришли из языка, ориентированного на память, и пытаетесь запихнуть эту логику в JS. Да, JS использует память (конечно), но у нас есть сборщик мусора, чтобы все это очистить.

Если вам нужны подробности о внутреннем распределении памяти, вам придется поискать это. Но, как показывает практика, когда вы используете var, new или объявляете новую функцию (или закрытие), вы поглощаете память. Вы можете установить для переменных значение null, чтобы пометить их для сборки мусора, и вы также можете использовать ключевое слово delete, хотя немногие из них делают любое из них, если они не работают на стороне сервера (как я с ASP JScript), где это важно.

4
ответ дан 29 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: