Я должен использовать javascript для проекта, но я ничего не знаю о javascript. В js-файле я использую jVectorMap для отображения карты мира, которая обновляется каждые 5 секунд. Когда я открываю веб-страницу с помощью этого javascript-файла в своем веб-клиенте и жду несколько часов, у моего компьютера заканчивается ОЗУ. Я использую консоль хром и консольный инструмент для определения части кода, создающего эту проблему. Когда я удаляю эту часть, проблема с использованием памяти отсутствует.Утечки памяти Javascript с JVectorMap
Часть кода:
function ui_geo_map(countriesCount) {
$('#geo-world-map').empty();
$('#geo-world-map').vectorMap({
map: 'world_mill_en',
series: {
regions: [{
values: countriesCount,
scale: ['#2ecc71', '#c0392b'],
normalizeFunction: 'polynomial',
legend: {vertical: true}
}]
},
onRegionTipShow: function(e, el, code){
el.html(el.html() + ' (' + countriesCount[code] + ' - servers)');
}
});
};
function ui_geo() {
console.debug('Redrawing the geo map');
$('.pywos-geo').remove();
$.getJSON('/get/geo/all', function(data){
$.each(data, function(key, val){
countriesCount[val.country_code] = val.count;
});
ui_geo_map(countriesCount);
});
};
Я знаю пустой следуют vectorMap, конечно, не правильный способ сделать это, но если я удалю $('#geo-world-map').empty();
карта не заменяется, вместо этого он отображается под предыдущий, который не то, что я хочу.
Может ли кто-нибудь помочь мне найти правильный способ сделать это без каких-либо утечек памяти?
вы можете захотеть использовать [ 'удалить()' вместо 'пустой()'] (HTTP://stackoverflow.com/questions/3090662/jquery-empty-vs-remove), поэтому узлы внутри '$ ('# geo-world-map ') 'будет удаляться, а не просто опустели. Но у меня мало надежды, что это решит вашу проблему, поскольку обе функции не утечки памяти. Убедитесь, что у вас есть последняя jquerylibrary tho. Вы можете продолжить и удалить еще один код, пока не найдете утечку. – InsOp
@InsOp: спасибо за ваш ответ. Если я удалю любой вызов ui_geo(), или если я не разрешаю его обновлять каждые 5 секунд, проблема с использованием памяти отсутствует. Вот почему я думаю, что проблема исходит из этой функции. – selfm
- это случай, если вы закомментируете 'ui_geo_map (countriesCount);' в вашей 'ui_geo()' -функции тоже? – InsOp