У меня есть веб-сайт на основе AJAX с использованием JavaScript на клиенте. Определенные операции на сайте кэшируют большие результирующие наборы от вызовов службы в браузере (то есть сотни мегабайт). Это одноразовые результаты. Они будут просмотрены в течение короткого времени, а затем должны быть удалены из памяти.
Я написал небольшой тестовый сайт, который загружает кучу мусора в память и затем вызывает метод JavaScript delete
. Это прекрасно работает в Firefox (память почти мгновенно возвращается). Internet Explorer 8 (еще не пробовал 7) не освобождает память до тех пор, пока страница не будет обновлена или закрыта.
Кто-нибудь знает, как отказаться от использования памяти IE с помощью JavaScript / Ajax (без обновления страницы)?
Ниже приведен мой пример кода клиента:
function load() {
var x = ['dfjasdlfkjsa;dflkjsad;flkjsadf;lj'];
for( var i = 0; i < 10000000; ++i ) {
x.push('asdfasfasfsfasdfkasjfslafkjslfjsalfjsaldfkjasl;dfkjsadfl;kjsdflskajflskfjslakfjaslfkjsaldfkjsaldfksdfjk');
}
alert('deleting'); // <--- memory usage around 500mb
delete x; // <--- immediate results in Firefox 3.5 (not IE8)
alert('done');
}
ОБНОВЛЕНИЕ: Установка переменной 'null' не приводит к немедленной очистке памяти (поскольку она остается до сборщика мусора). Кроме того, установка переменной null дает только одну ссылку, где может быть несколько ссылок.