Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Утечка памяти и борьба новым способом) (https://javascript.ru/forum/dom-window/30405-utechka-pamyati-i-borba-novym-sposobom.html)

KupueIIIKo 03.08.2012 09:05

Утечка памяти и борьба новым способом)
 
:) У меня была проблема по утечке памяти:)
После выполнения скрипта в оперативке весело 1 гиг оперативы!
Я долго думал и пробывал как и где бороться с утечкой памяти, единственное. что меня устраивало итог скрипта рабочий, а времени допилить его нет, и нужно было выложить рабочий скрипт! Оставалось тока очистить буфер! Не поверите на выход пришел iframe:)
Довольно простой алгоритм, но справляется на 200%)

Грузим iframe со скриптом) выполняем, что нужно и убиваем iframe) Все спустя несколько секунд garbage collector вам дает высвобожденную память) Вообще это некрасиво, но в некоторых случаях это довольно отличное решение)

Тестровал

<!DOCTYPE html> 
<html>
<head>
<noscript>
<meta http-equiv="refresh" content="0; url=nojs.html">
</noscript>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" content="no-cache">
<link rel="stylesheet" type="text/css" href="css/style.css">
<script src="http://yandex.st/jquery/1.7.2/jquery.min.js"  type="text/javascript"></script>
<script>
$(document).ready(function () {
$("#fuck").click(function()
{
var el = document.getElementById("raka");
el.parentNode.removeChild(el);
});
})
</script>
</head>
<body>
<div id=raka>
<iframe src="img_load.php">
</iframe>
</div>
<input id='fuck' type="button" value="убить" style="width:200px; height: 20px;">
</body>
</html>

bes 03.08.2012 10:51

Попробуйте удалить со страницы сам элемент <script> с вашим скриптом (поможет /не поможет), хотя сам элемент будет висеть в памяти, всё остальное, задействованное им вроде бы должно освободиться (если не ошибаюсь)

tadjik1 03.08.2012 10:57

удаляйте элементы через $.remove(), будет вам счастье. хаки с говно-скриптом — отстой, имхо.

KupueIIIKo 03.08.2012 11:28

Цитата:

Сообщение от tadjik1 (Сообщение 194222)
удаляйте элементы через $.remove(), будет вам счастье. хаки с говно-скриптом — отстой, имхо.

Есть моменты в которых так просто remove() не обойтись)

Deff 03.08.2012 11:36

KupueIIIKo,
Если можно - приведите наиболее ресурсоёмкий кусок возможно, кто - чего и присоветует

KupueIIIKo 03.08.2012 11:50

:D Это всё та же загружалка изображений)

Deff 03.08.2012 11:55

Цитата:

Сообщение от KupueIIIKo
Это всё та же загружалка изображений)

Ну - я хорошо еще вспомнил - а новые люди - пройдут мимо - посколь
задача типо - А у нас в квартире - газ... кому охота помогая - разгребать чужую историю постов ?
я например на пятке форумов кручусь и Вашу задачу с загрузкой вспомнил с трудом...


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