Утечка памяти в jQuery Mobile и Google Maps API v3 - PullRequest
1 голос
/ 13 января 2012

У меня есть мобильное веб-приложение, использующее jQuery Mobile 1 и Google Maps API v3. Похоже, что при загрузке Google Maps в jQuery Mobile произошла серьезная утечка памяти. Память, занятая Google Maps, не освобождается, когда пользователь покидает страницу карты. Таким образом, когда пользователь возвращается на страницу карты, использование памяти продолжает расти. Это особенно большая проблема для мобильных веб-браузеров. Я тестирую следующее на Android и на настольной версии Chrome. Утечка может быть вызвана следующим образом:

Перейдите к: http://www.mycoursewalk.com/mobile_course_walk/show/25

Нажмите «Просмотр курса» и дайте карте полностью загрузиться. Затем нажмите кнопку «Назад» браузера или кнопку «Назад» в левом нижнем углу. Нажмите «Просмотр курса» и дайте карте полностью загрузиться. Повторение. При каждой загрузке карты вы видите около 30 МБ, добавленных к процессу Chrome или мобильного браузера.

Как я могу это исправить? Я не могу найти выгрузку API-карты.

Спасибо

Ник

1 Ответ

0 голосов
/ 22 февраля 2012

Я думаю, что вы вызываете createMap каждый раз вместо того, чтобы проверять, существует ли карта или нет, и повторно используете объект.

Попробуйте что-то вроде этого:

var mapDisplay = {                                                                                                                                                               
    mapCreated : false,
    init: function() {
      //some init stuff
    },
    showMap: function() {
        if(!mapDisplay.mapCreated) {
            mapDisplay._createMap();
            mapDisplay.mapCreated = true;
        }
        $("#my_map").show();
        $('#my_map').gmap('refresh');                                                                                                                                  
    },
    _createMap : function() { 
        //options would be a json config object
        $('#my_map').gmap(options);
    },
    //all the other methods you need
}

, чтоработать с библиотеками, используемыми в демонстрационном приложении jQuery gmap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...