Показать сообщение отдельно
  #1 (permalink)  
Старый 27.12.2011, 17:13
Новичок на форуме
Отправить личное сообщение для evgkar Посмотреть профиль Найти все сообщения от evgkar
 
Регистрация: 27.12.2011
Сообщений: 2

Утечки памяти при использовании JSONP в IE 9
Необходимо делать опрос сервера с интервалом в 250мс. Сервер находится в другом домене, поэтому для обращения был выбран JSONP. Однако, оказалось, что в Internet Explorer 9 происходит нечто очень похожее на утечку памяти. Приведу пример:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script src="scripts/jquery-1.7.1.min.js"></script>
        <script src="scripts/jquery.jsonp-2.2.0.min.js" type="text/javascript"></script>
    </head>
    <body>
        <h1> Test in progress... Please, don't close this page </h1>
        <script type="text/javascript">
                        function send(){
                            $.ajax({
                                url: "http://localhost:81/job/GetAllStatuses/jsonp",
                                success: onReceive,
                                dataType: 'jsonp',
                                cache: false
                            });
                            
// Вариант со сторонним плагином - то же самое                            
//                            $.jsonp({
//                                url: "http://localhost:81/job/GetAllStatuses/jsonp?callback=?",
//                                success: onReceive
//                            });
                        }

                        function onReceive(message) {
                            // Даже если здесь ничего не делать - утечка есть
                        }

                        setInterval(send, 250);
            
        </script>
    </body>
</html>


Как видно, было сделано 2 теста — с использованием jQuery и отдельного плагина. Результат приблизительно один и тот же — линейный рост памяти, потребляемой процессом IE. За 1,5 часа рост ~ на 270 MB.

Кстати, забавно — запускал нечто подобное и под Chrome, но там измерял размер хипа (с помощью встроенного средства профилирования памяти) — результат крайне интересный: при использовании $.ajax размер хипа увеличился за 17 часов ~ на 30МБ, а вот у плагина ($.jsonp) результат был неожиданно лучше — за 17 часов вырос всего на 30КБ =)

Поэтому хотелось бы узнать каким образом, используя JSONP, устранить такое неуемное потребление памяти?

PS. Провел тест с использованием вот этой штуки - результат тот же
Ответить с цитированием