Интересное наблюдение с IE управления памятью и JavaScript - PullRequest
4 голосов
/ 26 августа 2009

В Windows, когда приложение свернуто, ОС освобождает память, связанную с приложением, помещая данные в файл подкачки. Другая сборка мусора также может выполняться.

В случае интернет-обозревателя, работающего с моим приложением javascript, я обнаружил, что если использование памяти начинается с 60 МБ, то минимизация браузера уменьшает память до 17 МБ. Максимизация затем возвращает его до 40 МБ

20 Мб усиления.

Мое приложение интенсивно использует javascript, и я подозреваю, что IE форсирует сборку мусора для объектов, на которые больше нет ссылок.

С помощью javascript (только для IE) вы можете форсировать сборку мусора с помощью:

CollectGarbage()

Итак, если я вызову этот метод (без сворачивания экрана), я верну только мег или 2.

Если я позвоню через очередь событий:

setTimeout(CollectGarbage, 1000)

Я возвращаю около 3 мег

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

У кого-нибудь есть идеи, как заставить IE очищать свою память так же, как это делает ручное минирование?

Предложения по программной минимизации браузера будут высмеиваться!

Приветствия:)

1 Ответ

1 голос
/ 26 августа 2009

Используйте ключевое слово delete, чтобы отменить определение переменной / свойства, экономя вашу память. Подробнее здесь .

Но если вам нужно только потерять ссылку на свойство объекта, просто установите его на null и дождитесь следующей коллекции.

Будьте осторожны, используя замыкания и лямбда-функции, так как они традиционно были боровами памяти и источниками утечек. См. Основные сведения об образцах утечки в Internet Explorer .

.
...