Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ajax пожирает память / 13 сообщений из 13, страница 1 из 1
09.10.2007, 17:46
    #34857915
Vint_x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
Начал изучать 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
09.10.2007, 18:16
    #34858041
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
может сделать глобальный request а не создавать каждый раз новый?
...
Рейтинг: 0 / 0
10.10.2007, 09:24
    #34858968
Vint_x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
Пробовал делать его глобальным, создавать конструктор не в цикле, а перед ним, но память продолжает утекать.
Всему виной эта строчка:
http_request.send(null); но без неё собственно и не будет работать :-)
...
Рейтинг: 0 / 0
10.10.2007, 11:25
    #34859481
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
Вы на IE пробуете штоле?
...
Рейтинг: 0 / 0
10.10.2007, 11:57
    #34859635
viv
viv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
я тоже думаю что создавать каждый раз соединение в цикле это глум.
тут статья по тому что жрет память в осле
http://htmlcoder.visions.ru/JavaScript/?29
...
Рейтинг: 0 / 0
10.10.2007, 17:15
    #34861095
Vint_x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
Здесь я напечатал просто пример, т.к. печатать весь код как есть не вижу никакого смысла.
Программма пишется для осла.
...
Рейтинг: 0 / 0
10.10.2007, 17:42
    #34861207
Vint_x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
Попробовал сделать как написанно в статье. нефига.
Даже такой пример всё равно жрёт:
Код: 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
11.10.2007, 11:59
    #34862659
Frenzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
используй нормальные браузеры
или хотя бы готовые аяксовые апи, например prototypejs. возможно там они как-то решают этот вопрос с кривым браузером

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

_______________________________________
2pro4U
...
Рейтинг: 0 / 0
11.10.2007, 17:34
    #34864071
Vint_x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
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
Период между сообщениями больше года.
17.06.2009, 00:02
    #36044821
Nik0las
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax пожирает память
Есть простое решение проблемы: http://www.nik0las.ru/blog/2009/06/16/ajax_and_memory_leaks_at_ie.html
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ajax пожирает память / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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