【问题标题】:What are all possible reasons for ie11 memory leaks?ie11内存泄漏的所有可能原因是什么?
【发布时间】:2020-06-02 06:17:20
【问题描述】:

我有一个 SPA 应用程序,在 chrome 中运行良好,没有内存泄漏。

但是,IE11 (Windows 10) 每 15 分钟崩溃一次。

请不要告诉我 IE11 已被弃用。我的公司支持 IE11,我们的客户正在使用 IE11。

我知道 IFrame 会导致 IE11 上的内存泄漏。

我听说 GIF 在 IE11 上也会导致内存泄漏,是真的吗?

根据您的经验:

  • 哪些原因可能导致 IE11 出现内存泄漏?
  • 如何避免这些内存泄漏?
  • 有没有很好的有效方法,在不中断用户体验的情况下每隔 x 分钟“释放”IE 上的内存泄漏?

我想在这里收集所有可能导致 IE11 内存泄漏的原因。

【问题讨论】:

  • 遗憾的是我的公司仍然支持 IE11。
  • 所有拥有大客户(如银行)的公司都支持IE11。他们付出了很多,并希望你成为最好的。
  • @JonathanStellwag 您确实是正确的。回答这个问题:错误众多且无限。祝你好运。
  • @MegiBenNun 这个问题很重要,您将无法得到可靠的答案。不同 JS 引擎的细微差别,以及专门针对 Chrome 的 V8 引擎进行的优化和改进,以避免许多内存泄漏问题,而且每一个都是一个难以掌握的概念。一些经验法则是要小心多个作用域共享的变量(9 隐式或非隐式),并且在持有 DOM 引用时要小心。此外,如果您没有注意到 Chrome 中的内存泄漏,也不足为奇。
  • 希望你不要觉得受到了我的人身攻击。我无意射杀信使。我只是永远支持废弃技术的反对者。我理解你的立场、你的问题和你提出的建议,但恐怕这只是徒劳的。我猜 IE 的代码已经有十多年没有维护了,而微软只是勉强维持它的生命。 IE 最大的技术优势之一是对第 3 方 ActiveX 组件的支持。金融部门严重依赖此类组件,但它们也会在浏览器中造成很多不稳定因素。

标签: javascript memory-leaks internet-explorer-11


【解决方案1】:
  1. 哪些原因可能导致 IE11 出现内存泄漏?

导致内存泄漏的原因有很多,这里我们没有关于您的 SPA 的任何信息,因此我们很难说出导致内存泄漏的原因。

我建议您访问以下链接,这些链接可能会让您了解内存泄漏的可能原因。

Memory Leakage in Internet Explorer - Revisited

Edge/Internet Explorer memory leak

  1. 如何避免这些内存泄漏?

我在第 1 点分享的链接也会给出避免泄露的建议。

我试图参考有关此主题的官方 Microsoft 文档。我发现这些文档中的链接已损坏。

Tools for Detecting Memory Leaks

JavaScript Memory Leak Detector for Internet Explorer

  1. 有没有很好的有效方法,在不中断用户体验的情况下每隔 x 分钟“释放”IE 上的内存泄漏?

您可能需要刷新页面。在某些情况下,它可以工作。显然,用户会被打断。

这是一个例子:

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);

Detect when IE11, with its built-in memory leak, runs out of memory (1.5GB recyclable pool)

【讨论】:

  • 我认为你为这个问题提供了最好的答案。不错!
猜你喜欢
  • 2023-03-08
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 2017-04-28
相关资源
最近更新 更多