Note: Microsoft has publicly disowned IE, but it is still relevant when testing what happens if a webpage is viewed with the Microsoft web browser on an older Windows version that wasn’t bundled with Edge.
In Win32 in general (IE is part of Win32, but possibly with its own differences), total memory use includes memory allocated with a variety of Win32 calls, while heap memory includes only that allocated with the heap Win32 calls. Thus it is entirely reasonable for some of the memory in any process to be allocated outside the heap. The most important memory allocation functions not counted as heap allocations are mostly suited to large allocations of 64 Kilobytes or more each, but are sometimes needed for smaller allocations too (because some uses require the specific features of those “large allocation” Win32 calls).
-
In most programs, the largest objects are “memory mapped files” whereby the program is allowed to access one or more files as if they were memory allocations (but no actual memory is used until necessary). The most common “memory mapped files” are in fact all the DLLs, EXEs and OCXs in the process, each of which are actually mapped indirectly into memory in order to use them.
-
Another seemingly giant (but actually cheap) allocation is the special allocation used by one of the more modern security mechanisms to prevent remote attacks from using “return-based programming” to run random bytes that aren’t supposed to be run directly.
-
A third kind of large allocation is the special way the bitmap manipulation APIs work in Win32. For example, if there is a large JPG on a page, the memory for the decompressed bitmap will often be allocated outside the heap and thus count only towards “total memory”. Large bitmap images of the actual page may also be used by some IE versions to allow faster scrolling up and down on a page.
-
To find out what is actually allocated in an IE process and what is in those allocations requires going a bit deeper by using tools designed for debugging IE itself. The most powerful (but not user friendly) tool is Microsoft WinDbg, which is available in the Microsoft Platform SDK (a multi-gigabyte install). There may be other tools (at least there used to be) that can inspect allocations much more easily than using a WinDbg and looking at each allocation one by one.
Now back to easy steps. The way to figure out if there is a memory leak is to see if the numbers keep growing between identical situations in a single run of IE (or any other program). For a web browser like IE, one test is to navigate back and forth between the same pages. Another test is to navigate to and from a completely blank page in the same domain (one that has just the minimum HTML tags, no scripts, CSS, images, formatting or text) (which is different from navigating to about:blank).