How Safari’s tab groups consume memory

Everyone uses their browser differently. While I’m generally frugal and seldom have more than four tabs open, I know several who delight in having dozens of tabs active at a time. Safari 15’s tab groups must be a great boon for those who love them, but like so many things they come at a cost which may not be immediately apparent: memory.

When you open a webpage in Safari, it creates a Safari Web Content process named by the URL, such as https: //www.bbc.co.uk, which might use around 150 MB of memory. Move on to another address in the same tab, and that process is retained so you can step back to that page quickly without it having to be downloaded. Once it’s no longer in a tab’s immediate history, it’s represented as a cached page, which could when necessary be written out to a file on disk, and eventually purged. Unless a tab goes very deep, the number of pages retained usually remains modest and overall effect on the memory used by Safari is small.

Tabs work differently once they’ve been loaded, and persist for longer, creating a cost in terms of used memory. To see how this works, I’ve been watching what happens using Activity Monitor. One practical note about observing these situations: apps like Safari consist of multiple entries in Activity Monitor, and in some listings can be hard to unravel. For these purposes, I recommend setting the View menu to All Processes, Hierarchically, which lists Safari-related components together and makes them much easier to observe.

Safari runs as a group of interrelated processes. While the Safari app itself may only use just over 100 MB of memory when it’s loaded with just its Start Page, it might use a total of around 400 MB. Load a single page in one tab and that rises by around 150-200 MB to accommodate that active page, according to its content and needs.

safari01

I then built three saved tab groups, each containing ten pages. This makes essentially no difference to the app’s memory requirements until those tab groups are accessed, as Safari only loads tabs in its tab groups on demand. Until you access them, the effect of many pages in unopened tab groups is minimal and similar to these referred to by bookmarks.

What I then did was to open each of those 30 tabs in their groups, ensuring that the pages all loaded, and then switched back to the Start Page. Because those thirty tabs remain open, instead of passing into cached pages, they’re still retained as Safari Web Content processes, and listed by URL in Activity Monitor.

safari02

Safari’s app memory usage rose by 3.8 GB, as did its total memory use, that’s an average of more than 120 MB per tab. The largest single tab accounted for nearly 190 MB of memory, and in many cases there appeared to be Metal Compiler Services processes loaded to support tabs and add to their memory footprint. Peak memory use by the Safari app alone changed little, from its minimum of 102 MB to a maximum of 112.8 MB.

The lesson here is that you don’t get something for nothing. Websites referenced as Bookmarks take next to no memory, as do those in tabs so long as they remain unopened. But once you have opened a tab, its Safari Web Content process remains in memory until Safari is closed, unless you remove that tab altogether, which you’re hardly likely to do if you’ve put it into a tab group.

Tabs and tab groups in Safari 15 are a valuable feature for many users. But used without being mindful of their costs they could run your Mac short of free memory, particularly if it only has 8 or 16 GB installed.

I don’t think this effect explains the reports of apparent memory leaks in recent versions of macOS. But having many active tabs in tab groups certainly isn’t going to help. I’m going to remain with my frugal strategy for the time being.