2016-04-13 5 views
3

У меня есть огромная проблема при создании небольшого веб-приложения для моей домашней сети (некоторые данные о погоде, энергопотребление и т. Д.) С помощью Highcharts.Огромная утечка памяти в Highcharts - Создание и уничтожение недостающих памяти?

Мое использование - это то, что у меня есть webapp-running 24/7, который показывает мне некоторые ключевые данные в простом представлении, просто цифры ;-) Когда я нажимаю на один из этих номеров/фрагментов, подробная страница с диаграммой. Я реализовал механизм автоматической детализации, который прокручивает страницы подробностей каждые X секунд.

Моя проблема заключается в том, что я создаю диаграммы высокого чарта при щелчке по плитке, когда скрывается плитка, диаграмма уничтожается с помощью .highcharts(). Destroy(); ', после чего диалоговое окно уничтожается.


Примерно через 4-5 часов браузер вылетает («Oh Snap ...»). я профилированного использование памяти веб-сайта, и это выглядит так:

enter image description here

Я вполне уверен, что не должно выглядеть! Как вы можете видеть, «c» в нижележащей области становится все труднее!

Так вот мое творение диаграммы:

if(typeof $(bindTo).highcharts() !== 'undefined'){ 
 
     $(bindTo).highcharts().destroy(); 
 
} 
 

 
// get here data with jquery from backend [jquery caching disabled] 
 

 
var chart = $(bindTo).highcharts({ 
 
...... 
 
});

Так вот только одна деталь из хром-профилировщика:

enter image description here

Я просто выбрал один из эти синие полосы (что означает, что этот объект, созданный здесь, все еще жив в конце проф. iling процесс [?!]). Кажется, что эта синяя полоса состоит из этого объекта 'c', и это относится к Highcharts.

Что я делаю неправильно? Это известное поведение? Как я могу это решить? (Да, может быть, я мог бы создать каждую диаграмму только один раз и просто обновить данные, но это будет мой последний decission ;-))

Благодаря

ответ

2

Хорошо,

я решил проблему сам.

После долгой отладки я узнал, что мой модальный диалог был отделен от DOM до того, как был использован метод destroy Highcharts. Таким образом, установка метода destroy внутри скрытого-слушателя модального диалога сделала это.

Смежные вопросы