Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Управление выделением памятью (https://javascript.ru/forum/misc/7866-upravlenie-vydeleniem-pamyatyu.html)

dp_ 23.02.2010 00:32

Управление выделением памятью
 
Доброго времени суток!
Как решить проблему с освобождением памяти выделенной браузером под функции произвольного объекта? Освободит ли память сборщик мусора если присвоить функции значение = undefined?

dp_ 23.02.2010 00:39

или воспользоваться оператором delete?

e1f 23.02.2010 01:02

Явно управлять процесом высвобождения памяти на JS Вы не сможете. К примеру, FF часто не отдает уже забранную память, использую ее для своих нужд, но в систему уже не возвращая.
delete переменные не удаляет. Поэтому, undefined или null. И опять же, сборщик удалит ненужные данные лишь тогда, когда на них не будет ни одной ссылки.

dp_ 23.02.2010 01:55

delete function
 
ИХМО function в JavaScript являются объектами в связи с этим было бы логично использовать к ним оператор delete для освобождения памяти. поправте меня если я ошибаюсь. к сожалению я не знаю способа проверить высвобождение памяти в лисе. ни способом установления в null не с помощью оператора delete.

e1f 23.02.2010 10:14

Ну, попробуйте применить delete к функции. Получилось? Можно так:
function foo() {
    // многа букаф
}
// ...
foo = null; // а теперь нет у нас больше функции foo

dp_ 23.02.2010 10:52

function delete
 
Да функции нет Вы правы но как убедится что сборщик мусора действительно освободил память

e1f 23.02.2010 11:13

Ctrl-Shift-Esc, потом «О зловредный браузер, отдай раму системе православной!»
Серьёзно -- никак. JS средств для этого не предоставляет.

vk65535 23.02.2010 11:18

Сборщик мусора автоматически освобождает все занятые блоки, на которые нет ссылок. В лисе это делается с некоторым запозданием (видимо, есть некий пул временно свободных блоков, которые могут внезапно стать нужными, если, допустим, происходит создание и удаления объектов в цикле). В остальных браузерах память освобождается практически сразу (хотя, не исключено наличие подобного или др. механизмов).


Часовой пояс GMT +3, время: 18:07.