- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新 2:已经在 video.js github 上报告了错误。不过我还是没找到这个bug的原因。所以这个问题仍然悬而未决。
不得不说,给-2的那两个人都是不讲理、不顾一切的蠢人。
<小时/>更新:我不知道谁给了这个问题-1,尤其是他无法回答。
我尝试打印出所有创建的新组件和废弃的 video-js 组件。
我发现,调用player.dispose后,虽然大部分组件,包括外层DIV、内层VIDEO都被释放了,但还有一些内层组件,包括2个DIV、3个LI、2个BUTTON和很多SELECT都被释放了未处理。
我认为那些未处理的元素保留在 vjs.cache 中,并且因为事件监听器回调(可能是闭包)依赖于玩家对象本身的上下文。因此,即使主 DIV 和 VIDEO 从 vjs.cache 中删除,主播放器也永远不会被释放。
具体来说,未从 vjs.cache 中删除的项目包括:
1. DIV with contents: <ul class="vjs-menu-content"></ul>
2. Another DIV with contents: <ul class="vjs-menu-content"></ul>
3. LI with contents: subtitles off, captions off, and English
4. BUTTONs with contents: done and defaults
5. SELECTs with contents:
5.1) <option value="">---</option><option value="#FFF">White</option><option value="#000">Black</option><option value="#F00">Red</option><option value="#0F0">Green</option><option value="#00F">Blue</option><option value="#FF0">Yellow</option><option value="#F0F">Magenta</option><option value="#0FF">Cyan</option>
5.2) <option value="">---</option><option value="1">Opaque</option><option value="0.5">Semi-Opaque</option>
5.3) <option value="0.50">50%</option><option value="0.75">75%</option><option value="1.00" selected="">100%</option><option value="1.25">125%</option><option value="1.50">150%</option><option value="1.75">175%</option><option value="2.00">200%</option><option value="3.00">300%</option><option value="4.00">400%</option>
5.4) <option value="none">None</option><option value="raised">Raised</option><option value="depressed">Depressed</option><option value="uniform">Uniform</option><option value="dropshadow">Dropshadow</option>
5.5) <option value="">Default</option><option value="monospaceSerif">Monospace Serif</option><option value="proportionalSerif">Proportional Serif</option><option value="monospaceSansSerif">Monospace Sans-Serif</option><option value="proportionalSansSerif">Proportional Sans-Serif</option><option value="casual">Casual</option><option value="script">Script</option><option value="small-caps">Small Caps</option>
我仍在寻找如何删除它们。
我只是想知道为什么video.js直到5.0.0版本都没有考虑过这样的内存泄漏。
<小时/>原始问题:
我只有 2 个按钮,1 个用于添加视频,1 个用于删除视频。
视频源在我的本地机器上,您可以更改视频源进行测试。
源码如下,简单易懂。
这段代码(使用chrome内存快照)的问题是,
等等
内存只是堆积起来。
video-js 版本是 4.12.7。我尝试了 video-js 5.0.0,但没有运气,都是一样的。
有人知道我的代码有什么问题或者 video-js 有什么问题吗?如何防止这种泄漏?
谢谢。
<link href="/js/video-js/video-js.css" rel="stylesheet">
<script src="/js/video-js/video.dev.js"></script>
<script src="/js/jquery-1.11.2.min.js"></script>
<script>
function video_html(id) {
return '<video id="video-js-player" class="video-js vjs-default-skin" ' +
' preload="auto" width="960" height="540" crossorigin="anonymous" ' +
'data-setup=\'{"example_option":true}\'>' +
'\t<source src="http://192.168.101.1:20001/live/' + id + '.mp4" type="video/mp4" /> \n' +
'\t\t<track id="video-vtt" kind="subtitle" label="english" srclang="en" src="http://192.168.101.1:20001/live/' + id + '.vtt" default></track>\n ' +
'\t\t<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>\n' +
'</video>';
};
var player;
var insertVideo = function(){
console.log("insert video");
$.ajax({
method:"GET",
data:{},
url: "http://192.168.101.1:20001/live/list",
success: function(list){
keys = list["keys"];
newest_key = keys[keys.length - 1];
$("#video-container").html(video_html(newest_key));
player = videojs("video-js-player", {}, function() {} );
}
});
};
var removeVideo = function() {
console.log("remove video");
$('#video-container').html('');
if (player) {
player.dispose();
player = null;
}
}
$(document).ready(function() {
$('#delete').click(function(e){
e.preventDefault();
removeVideo();
});
$('#add').click(function(e){
e.preventDefault();
removeVideo();
insertVideo();
});
});
</script>
<a id="add" href="#add">Add</a>
<a id="delete" href="#delete">Delete</a>
<div class="container" id="video-container">
</div>
最佳答案
我已经找到了这个bug,并向video-js提交了bug报告。了解更多信息,请阅读
https://github.com/videojs/video.js/issues/2686
希望它对任何使用 video.js 的人有所帮助。
关于javascript - 所有浏览器上的 javascript 和 video-js 中的内存泄漏(以最简单的示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32980125/
IntentReceiver 正在泄漏 由于 onDetachedFromWindow 在某些情况下未被调用。 @Override protected void onDetachedFromWind
好吧,我很难追踪这个内存泄漏。运行此脚本时,我没有看到任何内存泄漏,但我的 objectalloc 正在攀升。 Instruments 指向 CGBitmapContextCreateImage >
我编写了一个测试代码来检查如何使用 Instrument(Leaks)。我创建了一个单一 View 应用程序,单击按钮后我加载了一个像这样的新 View ... - (IBAction)btn_clk
我正在使用这个简单的代码并观察单调增加的内存使用量。我正在使用这个小模块将内容转储到磁盘。我观察到它发生在 unicode 字符串上而不是整数上,我做错了什么吗? 当我这样做时: >>> from u
我有以下泄漏的代码。 Instruments 表示,泄漏的是 rssParser 对象。我“刷新”了 XML 提要,它运行了该 block 并且发生了泄漏...... 文件.h @interface
我在我编写的以下代码片段中发现了内存泄漏 NSFileManager *fileManager=[[NSFileManager alloc] init]; fileList=[[fileManager
因此,我正在开发HTML5 / javascript rts游戏。观察一直有几种声音在播放。因此,对我来说,是一段时间后声音听起来像是“崩溃”,并且此浏览器选项卡上的所有声音都停止了工作。我只能通过重
下面是我正在使用的一段代码及其输出。 my $handle; my $enterCount = Devel::Leak::NoteSV($handle); print "$date entry $en
在这篇关于 go-routines 泄漏的帖子之后,https://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sende
我想知道为什么在执行 ./a.out 后随机得到以下结果。有什么想法我做错了吗?谢谢 http://img710.imageshack.us/img710/8708/trasht.png 最佳答案 正
我正在 Swift 中开发一个应用程序,在呈现捕获我放在一起的二维码的自定义 ViewController 后,我注意到出现了巨大的内存跳跃。 该代码本质上基于以下示例:http://www.appc
下面是我的 javascript 代码片段。它没有按预期运行,请帮我解决这个问题。 function getCurrentLocation() { console.log("insi
我们在生产环境中部署了 3 个代理 Kafka 0.10.1.0。有些应用程序嵌入了 Kafka Producer,它们将应用程序日志发送到某个主题。该主题有 10 个分区,复制因子为 3。 我们观察
我正在使用仪器来检测一些泄漏,但有一些泄漏我无法解决; NSMutableString *textedetails = [[NSMutableString alloc] init];
如果我使用性能工具测试我的代码 - 泄漏,它没有检测到任何泄漏。这是否意味着代码没有泄漏任何内存? 我有一个越狱的 iPhone,我可以监控可用内存。如果有人知道,那就是 SBSettings。我测试
我在从 AddressBook 中获取图像时遇到了很大的问题,下面我粘贴了我的代码。此 imageData 从未被释放,在我的 Allocations Instruments 上它看起来总是在内存中它
- (NSMutableArray *)getArrayValue:(NSArray *)array{ NSMutableArray *valueArray = [NSMutableArra
Instruments 工具说这是一个泄漏,有什么想法吗? 我在 for 循环结束时释放变量对象 在上述方法的开头,这就是我设置变量对象的方式,即自动释放; NSMutableArray *varia
我正在跟踪我的 iOS 应用程序的内存泄漏,我有一个奇怪的泄漏导致我的应用程序崩溃......负责的框架是:CGImageMergeXMPPropsWhithLegacyProps。在某些时候,我的应
我正在尝试使用 NSOperationQueue 在后台线程中执行一个方法,如下所示: NSOperationQueue *queue = [NSOperationQueue new]; NS
我是一名优秀的程序员,十分优秀!