当前位置: 首页 > 知识库问答 >
问题:

检测内置内存泄漏的IE11何时耗尽内存(1.5GB可回收池)

公孙国兴
2023-03-14

IE11有一个记录良好的iframe内存泄漏。在SPA中,如果您使用的是iframe,内存将增长到大约1.5GB,之后它将减速,直到崩溃。

我的任务是检测浏览器何时即将崩溃,并尽快重新启动页面。该应用程序是嵌入ASP.NET MVC中的Vue.JS。

IE11的浏览器中提供了哪种内存/性能检测?

  • 某种用过的内存度量库

其他想法?谢谢。:)

来源:https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10186458/https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8449104/http://support.sas.com/kb/60/514.html

共有2个答案

劳韬
2023-03-14

这就是我最终用来检测IE11运行中的内存溢出。

大意:每1秒计时一次。如果1秒计时器需要1分钟,我们就僵住了。

var startTime, endTime;

function start() {
    startTime = new Date();
};

function end() {
    endTime = new Date();
    var timeDiff = endTime - startTime; //in ms
    // strip the ms
    timeDiff /= 1000;

    // get seconds 
    var seconds = Math.round(timeDiff);
    console.log(seconds + " seconds");

    if (seconds > 60)
        console.log("IE11 just froze. We need to refresh.");
}

start();

setInterval(function () {
    end();

    start();
}, 1000);
罗华翰
2023-03-14

就我在这方面的经验而言,减轻这种情况的最佳选择是减少重新创建iframe并减少使用的总内存,以便泄漏很小(例如通过代码分割未使用的代码、删除大型库等)。然后,您可以进行测试,以估算每次页面加载预计会泄漏多少内存(或在您的情况下的任何相关指标),并提出重新加载应用程序的启发式方法(例如,在50页加载后)。

请记住,有时重新加载应用程序不会帮助IE回收内存。有一个奇怪的变通方法——你可以打开一个新标签,导航到你的应用,切换到那个标签,然后关闭旧标签。显然不是理想的用户体验,但它比页面刷新更可靠。

在其他情况下,内存正在泄漏,因为您在主窗口中的某个位置引用了iframe,或者在删除它之前没有清理iframe中的事件处理程序-我假设您已经从描述中检查了这一点,但我认为提及它不会有什么坏处:)。

 类似资料:
  • 问题内容: 我收到以下警告: 我在server.js中编写了这样的代码: 如何解决呢? 问题答案: 这是在解释节点eventEmitter文档 这是哪个版本的Node?您还有什么其他代码?那不是正常行为。 简而言之,其:

  • 问题内容: 是否有一些工具可以检测Node.js中的内存泄漏?并告诉我您在测试nodejs应用程序方面的经验。 问题答案: 以下工具对于发现内存泄漏很有用: 节点检查器 还有一个教程可以帮助您在此处查找内存泄漏: https://github.com/felixge/node-memory-leak- tutorial

  • 我在哪里可以找到libc_malloc_debug_leak。还有libc_malloc_debug_qemu。那么对于不同的Android版本(冰淇淋三明治、果冻豆、KitKat)和不同的设备(Galaxy Nexus、Nexus 7、Nexus 10)呢?

  • 问题内容: 我认为我的android应用正在泄漏内存。我不是绝对确定这是问题所在。 应用程序打开时经常崩溃,并且logcat尝试加载位图图像时会显示“内存不足”异常。 崩溃后,我重新打开了该应用程序,它运行正常。Logcat会显示许多“ gc”,并且JIT表会不时地向上调整大小,而不会向下调整,直到应用程序因内存不足错误而崩溃。 这听起来像是内存泄漏吗?如果是这样,我该如何定位和关闭泄漏点。 这是

  • 问题内容: 我一直在追寻内存泄漏(由“ valgrind –leak-check = yes”报告),它似乎来自ALSA。这段代码已经存在于自由世界中一段时间​​了,所以我猜这是我做错的事情。 输出看起来像这样: 并继续一些页面 这是由于我在一个项目中使用ALSA并开始看到这种巨大的泄漏……或者至少是所说泄漏的报告。 所以问题是:是我,ALSA或valgrind在这里遇到问题吗? 问题答案: ht

  • 问题内容: 我有一个长时间运行的脚本,如果让脚本运行足够长的时间,它将消耗系统上的所有内存。 在不详细介绍脚本的情况下,我有两个问题: 是否有可遵循的“最佳实践”,以防止泄漏发生? 有什么技术可以调试Python中的内存泄漏? 问题答案: 看看这篇文章:跟踪python内存泄漏 另外,请注意,垃圾收集模块实际上可以设置调试标志。看一下功能。此外,请查看Gnibbler的这段代码,以确定调用后已创建