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

admin2025-04-20  0

IE11 has a well-documented iframe memory leak. In a SPA, if you are using iframes the memory will grow to about 1.5GB after which time it will slow down until a crash.

My task is to detect when the browser is about to crash and restart the page soon enough. The application is Vue.JS that is embedded inside ASP.NET MVC.

What kind of memory/performance detection is available in browser in IE11?

  • Some kind of used memory measure library?
  • Some kind of performance measuring library?
  • Counting created javascript objects?
  • Counting created iframes?

Other ideas? Thanks. :)

Sources: / / .html

IE11 has a well-documented iframe memory leak. In a SPA, if you are using iframes the memory will grow to about 1.5GB after which time it will slow down until a crash.

My task is to detect when the browser is about to crash and restart the page soon enough. The application is Vue.JS that is embedded inside ASP.NET MVC.

What kind of memory/performance detection is available in browser in IE11?

  • Some kind of used memory measure library?
  • Some kind of performance measuring library?
  • Counting created javascript objects?
  • Counting created iframes?

Other ideas? Thanks. :)

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

Share Improve this question edited Feb 14, 2019 at 10:46 Edza asked Feb 12, 2019 at 12:18 EdzaEdza 1,4543 gold badges15 silver badges24 bronze badges 3
  • Require Chrome or Firefox. Yeah, I know. – Robert Harvey Commented Feb 12, 2019 at 18:49
  • 1 "well-documented iframe memory leak" - could you add a link to this documentation, please? – Bergi Commented Feb 13, 2019 at 20:02
  • Added the documentation. – Edza Commented Feb 14, 2019 at 10:47
Add a ment  | 

2 Answers 2

Reset to default 3

As far as my experience with this goes, your best bet to mitigate this is to reduce re-creation of iframes and reduce total memory used so the leak is small (for example by code-splitting unused code, removing large libraries, etc). You can then do a test to approximate how much memory you expect to leak per page load (or whatever relevant metric in your case) and e up with a heuristic to reload the app (for example, after 50 page loads).

Keep in mind that sometimes reloading the app will not help IE reclaim memory. There is a weird workaround for this - you can open a new tab, navigate to your app, switch to that tab, and close the old tab. Obviously not an ideal user experience, but it is more reliable than a page refresh.

In other cases memory is leaking because you have a reference to the iframe from somewhere in the main window, or did not clean up event handlers within the iframe before removing it - I assume you have checked for this from the description, but I thought it wouldn't hurt to mention it :).

This is what I ended up using to detect IE11 running out of memory.

Main idea: Timer every 1 second. If 1 second timer takes 1 minute, we just froze.

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);
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1745111929a285634.html

最新回复(0)