#javascript #memory-leaks #jwplayer
#javascript #утечки памяти #jwplayer
Вопрос:
Если я вызываю эту функцию много раз, должна ли она пропускать память?
Одна вещь вызвала у меня подозрение: здесь я назначаю instance player. У проигрывателя есть слушатели — onPlay и другие. Итак, когда я запускаю функцию playJW, она выполняет все. И поэтому эти слушатели работают после завершения выполнения функции. Я знаю, что они работают после выполнения функции, потому что видеофайл выполняется намного больше времени, чем требуется для выполнения функции.
Итак, если я вызываю эту функцию много раз — создается много копий этих слушателей или как это работает?
this.playJW = function(vid) {
$('#jwplayer').show();
// this was file name with .avi , we need only beggining
vid = vid.split('.');
var folder = /dogs6_4mb/;
if(this._isMobile()) {
folder = '/dogs6_2mb/';
}
var player = jwplayer('jwplayer').setup({
file: video_files_url folder vid[0] '.mp4',
height: '100%',
width: '100%',
controls: true,
autostart: true
});
this.isPlaying = false;
player.onPlay(function() {
player.setControls(false);
// to make not pause on display click
self.isPlaying = true;
});
player.onDisplayClick(function() {
if (!isPlaying) {
player.play();
self.isPlaying = true;
}
});
player.onComplete(function() {
$('#jwplayer').hide();
});
};
Я попытался проверить использование памяти с помощью инструментов разработчика — в первый раз показалось, что она немного увеличивается, до 11 МБ, затем я обновил страницу, а также отключил плагины chrome. Теперь размер веб-страницы не превышает 12,4 МБ. Но тестирование не заняло много времени.
Я хочу понять, очищены ли эти слушатели каким-то образом и как браузер узнает, что они больше не используются?
Обновить:
Комментарии:
1. У вас есть пример этого, запущенный для отладки?
2. К сожалению, нет, я не уверен, но тестовая версия jwplayer может иметь ограничение на количество воспроизведений. Но если действительно нужно, возможно, позже я мог бы сделать на jsfiddle.
3. Не существует тестовой версии JW Player с ограничением на воспроизведение. Если бы вы могли установить jsfiddle, это было бы здорово.
4. да, моя ошибка, заметил, что на сайте jwplayer, насколько я понимаю, воспроизводится ограничение в 500 размещенных файлов. Также создан jsfiddle.
5. Ах, да, это правда, наш бесплатный хостинг также ограничивает это.