Управление выделением памятью
Доброго времени суток!
Как решить проблему с освобождением памяти выделенной браузером под функции произвольного объекта? Освободит ли память сборщик мусора если присвоить функции значение = undefined? |
или воспользоваться оператором delete?
|
Явно управлять процесом высвобождения памяти на JS Вы не сможете. К примеру, FF часто не отдает уже забранную память, использую ее для своих нужд, но в систему уже не возвращая.
delete переменные не удаляет. Поэтому, undefined или null. И опять же, сборщик удалит ненужные данные лишь тогда, когда на них не будет ни одной ссылки. |
delete function
ИХМО function в JavaScript являются объектами в связи с этим было бы логично использовать к ним оператор delete для освобождения памяти. поправте меня если я ошибаюсь. к сожалению я не знаю способа проверить высвобождение памяти в лисе. ни способом установления в null не с помощью оператора delete.
|
Ну, попробуйте применить delete к функции. Получилось? Можно так:
function foo() { // многа букаф } // ... foo = null; // а теперь нет у нас больше функции foo |
function delete
Да функции нет Вы правы но как убедится что сборщик мусора действительно освободил память
|
Ctrl-Shift-Esc, потом «О зловредный браузер, отдай раму системе православной!»
Серьёзно -- никак. JS средств для этого не предоставляет. |
Сборщик мусора автоматически освобождает все занятые блоки, на которые нет ссылок. В лисе это делается с некоторым запозданием (видимо, есть некий пул временно свободных блоков, которые могут внезапно стать нужными, если, допустим, происходит создание и удаления объектов в цикле). В остальных браузерах память освобождается практически сразу (хотя, не исключено наличие подобного или др. механизмов).
|
Часовой пояс GMT +3, время: 18:07. |