Обновление
Согласно комментариям ниже, это было проверено в Chrome, и браузер, похоже, удерживает память из изображений до тех пор, пока страница больше не будет активно отображаться (перезагружена, переключена вкладка и т. Д.). К сожалению, это относится и к Firefox и IE.
IE и Firefox намного лучше распределяли память (непрерывно сбрасывая память, когда страница оставалась открытой), но оба продолжали расти бесконечно. После переключения вкладок в обеих (путем открытия новой вкладки) память почти сразу освобождалась.
Я не проверил ваш код досконально, поэтому не уверен, можно ли как-то избежать этой проблемы (она не выглядит так при первом проходе), хотя вы должны помнить, что вы постоянно добавляете признаки к когда-либо -растущий массив, который будет продолжать использовать все больше и больше памяти самостоятельно. Возможно, это ссылка в массиве, которой можно придерживаться, которого можно было бы избежать, если вы нашли другой способ реализации слайд-шоу.
Причина, по которой я предполагаю, может быть в следующем: сборка мусора с помощью node.js . Браузерный сборщик мусора должен гарантировать, что они недоступны (что они всегда есть, так как массив постоянно растет). Таким образом, вам нужно подождать, пока сборщик мусора очистит значения <img>
внутри индексов, чтобы освободить память, и это не обязательно произойдет, когда вы установите для них значение null.
Вам нужно будет передать свой итератор i
в функцию обратного вызова. После этого вы сможете обнулить изображение после того, как оно исчезнет, и освободить используемую память. Просто убедитесь, что вы не попали в общую проблему замыкания-итератора - что-то вроде этого должно работать:
pictures[i].fadeIn(500).delay(5000).fadeOut(500, (function(i) {
pictures[i] = null;
})(i);