1

Демоверсия «Dynamically updated data» на веб-сайте HighStock, похоже, утечка памяти в текущей версии Google Chrome (24.0). Я пробовал это в Mac OS X 10.8.2 и Windows 7 (64-разрядная версия). Я также пробовал Safari 6.0.2 на OS X, и IE9 и Firefox 18 на Windows 7. Протекание, похоже, происходит в Chrome, и это всегда происходит.Утечка памяти HighCharts/HighStock с помощью addPoints() только в Chrome

Учитывая, что это довольно значительная демонстрация, я ожидал, что она будет работать хорошо. Но, учитывая достаточно времени, он падает в Chrome, вызывая страницу ошибки «Aw, Snap». Это может занять много времени в демо, как написано, но если вы нажмете на ссылку jsFiddle и измените вызов setInterval() на 100 мс вместо 1000 мс, утечка будет довольно очевидной. Реальное приложение с несколькими сериями и приличным количеством данных может привести к краху Chrome всего за несколько минут.

Обратите внимание, что при постоянном добавлении данных параметр «сдвиг» в addPoints() всегда правдивый, что означает, что старые данные отбрасываются так же быстро. Таким образом, использование памяти должно быть довольно постоянным - и в браузерах, кроме Chrome, это так.

Я не уверен, как определить, является ли это ошибкой Chrome или HighCharts. И я не нашел полезного обходного пути. Был бы весьма признателен окончательный ответ на любой аспект.

+0

Скорее всего, ошибка HighCharts, которая наиболее заметна в Chrome, поскольку она запускает каждую вкладку в качестве собственного процесса. Вот подсказка, которая может помочь, если вы сможете найти, что использует память: http://stackoverflow.com/questions/5181954/memory-leak-in-javascript-chrome –

+0

Я запускал Safari без открытия других веб-страниц. Также IE. Похоже, что только у Chrome появляется увеличение использования памяти. –

+1

Просто попробовал связанное демо (с обновлением 100 мс) с Chrome 23 под Linux (Fedora 14) и не имел утечек. Тем не менее, в chrome 24 на Windows 7 он потребляет дополнительную мега-память примерно каждые 2 секунды! – Mark

ответ

2

Вдохновленный комментарием Марка, я решил попробовать разные версии различных вещей. Сначала я попробовал передовые версии jQuery и HighStock. Хром 24 (стабильный) все еще просочился. Затем я попробовал Chrome 23, поскольку он работал на Mark on Fedora, но он все еще просочился на Mac OS.

Затем я попробовал Chrome Canary build, 26.0. Он работал, без утечек! Он продемонстрировал классическую модель сбора мусора, создав избыточную память в несколько десятков мегабайт, а затем постепенно откатываясь до «нормального», каждые несколько секунд. Так что это хорошие новости. Плохая новость заключается в том, что Chrome Beta, 25.0, все еще протекает. Поэтому, если другие пользователи HighCharts испытают эту проблему в течение следующих двух месяцев, им придется либо использовать «нестабильную» версию Chrome, либо просто другую марку браузера.

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