powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ajax пожирает память
13 сообщений из 13, страница 1 из 1
Ajax пожирает память
    #34857915
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал изучать Ajax для мониторинга в реалтайме и вот с толкнулся с проблемой:
Каждый новый цикл JavaScript заглатывает оперативку. В результате чего программа особо долго работать не может. Пробовал очищать все переменные через delete, но толку от этого нет.
Кто нибудь сталкивался с этой проблемой?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <script type="text/javascript">
        function Init()
        {
            setInterval("Refrash()", 1000 );
        }
        function Refrash()
        {    
            
            var http_request = false;    
            if (window.XMLHttpRequest) 
            { 
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) 
                    http_request.overrideMimeType('text/xml');  
            } 
            else if (window.ActiveXObject) 
            {
                try
                {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } 
                catch (e) 
                {
                    try
                    {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) 
                    {}
                }        
            }
            if (!http_request) 
            {
                return false;
            }

            http_request.onreadystatechange = function(){              
                if (http_request.readyState ==  4  && http_request.status ==  200 )
                   document.body.innerHTML = http_request.responseText;
                }   
             
            http_request.open("POST", "ws.asmx/HelloWorld", true);             
            http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");               
            http_request.send(null);
        }
    </script>

</head>
<body onload="Init()">
</body>
</html>

...
Рейтинг: 0 / 0
Ajax пожирает память
    #34858041
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может сделать глобальный request а не создавать каждый раз новый?
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34858968
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал делать его глобальным, создавать конструктор не в цикле, а перед ним, но память продолжает утекать.
Всему виной эта строчка:
http_request.send(null); но без неё собственно и не будет работать :-)
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34859481
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы на IE пробуете штоле?
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34859635
Фотография viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже думаю что создавать каждый раз соединение в цикле это глум.
тут статья по тому что жрет память в осле
http://htmlcoder.visions.ru/JavaScript/?29
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34861095
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь я напечатал просто пример, т.к. печатать весь код как есть не вижу никакого смысла.
Программма пишется для осла.
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34861207
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сделать как написанно в статье. нефига.
Даже такой пример всё равно жрёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <script type="text/javascript">
        var http_request = false; 
        function Init()
        {            
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
            setInterval("Refrash()", 100 );
        }
        function Open()
        {
            if (http_request.readyState ==  4  && http_request.status ==  200 )
               document.body.innerHTML = http_request.responseText;
        }
        function Refrash()
        {
           http_request.open("POST", "ws.asmx/HelloWorld", true);             
            http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");      
            http_request.send(null);
            http_request.onreadystatechange = Open;
        }
    </script>

</head>
<body onload="Init()">
</body>
</html>
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34862659
Фотография Frenzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй нормальные браузеры
или хотя бы готовые аяксовые апи, например prototypejs. возможно там они как-то решают этот вопрос с кривым браузером

_______________________________________
2pro4U
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34863001
Mr.Zlatko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Firefox жрет если инасталированно куча плагинов
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34863130
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жрёт сам InternetExplorer. Плагинов на нём не висят, кроме одного.
Frenzy, а что по твоему мнению есть "не кревые броузеры"? В данном случае кроме IE никакой броузер не устраивает, т.к. аякс подгружает данные для ActiveX компонента, который работает только с IE.
Пример работы с Ajax брал с w3scools и с гугла, вот только из за нечастых обращений к средствам аякса они не запариваются по поводу утечки
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34863475
Фотография Frenzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошо, помимо кривого браузера еще и кривые активх (кстати есть и другие активх (не XMLHTTP) с аналогичной функциональностью и у них было чтото типо close() который освобождал память но точно не помню).
для сравнения попробуй сделай в Фаерфоксе с пом XMLHttpRequest

_______________________________________
2pro4U
...
Рейтинг: 0 / 0
Ajax пожирает память
    #34864071
Vint_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://xmlhttprequest.ru/Утечки памяти

В Internet Explorer объект XmlHttpRequest принадлежит миру DOM/COM, а Javascript-функция - миру Javascript. Вызов req.onreadystatechange = function() { ... } неявную круговую связь: req ссылается на функцию через onreadystatechange, а функция, через область видимости - видит (ссылается на) req.

Невозможность обнаружить и оборвать такую связь во многих (до IE 6,7 редакции июня 2007?) версиях Internet Explorer приводит к тому, что XmlHttpRequest вместе с ответом сервера, функция-обработчик, и всё замыкание прочно оседают в памяти до перезагрузки браузера.

Чтобы этого избежать, ряд фреймворков (YUI, dojo...) вообще не ставят onreadystatechange, а вместо этого через setTimeout проверяют его readyState каждые 10 миллисекунд. Это разрывает круговую связку req <-> onreadystatechange, и утечка памяти не грозит даже в самых глючных браузерах.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ajax пожирает память
    #36044821
Nik0las
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть простое решение проблемы: http://www.nik0las.ru/blog/2009/06/16/ajax_and_memory_leaks_at_ie.html
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ajax пожирает память
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]