Распределение памяти - PullRequest
       0

Распределение памяти

1 голос
/ 08 сентября 2011

Используя инструменты разработки Chrome, я обнаружил, что массивы и объекты выделяются. Я просмотрел свой код в поисках очевидных [], {} и new. Но нет ни одного. Я проверил функции, которые создают новые [], {}, new, и посмотрел, где эти функции используются, и я научился их не использовать. Итак, как еще можно выделить память?

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

1 Ответ

4 голосов
/ 08 сентября 2011

Бесполезно беспокоиться о распределении памяти. Память будет выделена для всего, переменных, массивов, объектов и т. Д. С javascript мало что можно сделать без использования переменной или объекта, но опять же, выделение памяти на самом деле не является доменом javascript сценарий . Любой и все JavaScript будет использовать некоторую степень памяти, несмотря ни на что. В самом деле, я бы сказал, что если вы «научились избегать использования» объектов и массивов, вы были дезинформированы или усвоили неправильный урок.

Гораздо важнее избегать циклических ссылок, избегать чрезмерного потребления памяти на область действия и вообще избегать блокировки потока в браузере из-за узких циклов и других плохих практик. Например, в цикле for избегайте пересчета предела в объявлении for: for (var x = 1; x < myString.length; x++) должно быть var max = myString.length; for(var x = 1; x < max; x++). Даже такие оптимизации ( микро -оптимизации в большинстве случаев) не являются критическими для разработчика javascript, поскольку браузер обрабатывает общее выделение / потребление памяти, а также сборку мусора из ссылки.

Для получения дополнительной информации о практических действиях, чтобы избежать утечек , прочитайте эту статью: http://www.javascriptkit.com/javatutors/closuresleak/index.shtml (или другие подобные статьи). В противном случае, если вы не утечка памяти, ожидается, что любой сценарий будет выделять / использовать некоторую степень памяти; это неизбежно. Учитывая, что на современном ПК имеется гигабайт доступной памяти, незначительные последствия использования скрипта килобайт или даже мегабайт не имеют большого значения - вот что такое память чтобы использовать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...