MacOS – Safari 8.0 on Yosemite doesn’t kill closed tab processes, hogs memory

macosmemorysafari

I've just upgraded to Yosemite and started using the new Safari 8.0. For a while, everything seemed fine, but then all got ever so slightly slower and slower, especially when switching desktops.

After losing patience, I opened Activity Monitor and to my shock, I found around a dozen old Safari Web Content processes still running and using a lot of memory, despite the tabs having been closed already.

Anyone noticed a similar thing? Or knows a way to force Safari to kill the process after closing a tab?

(Macbook Pro, mid-2012, 13inch, 4GB RAM)

Best Answer

I've seen this ever since Safari 8 on OS X 10.9.5, OS X 10.10.x all versions with Safari 8 and sadly in Safari 9 on all El Capitan betas to date, too. The Safari memory leak in my case is severe and Safari has to be completely quit & restarted often. It only seems to happen if you tend to have a few windows open a lot, which you "reuse"; but overall, Safari just grows and grows (by many GB).

Suggestions about "putting in more memory" are absurd. I've a 16GB Macbook Pro laptop which is the maximum configuration of soldered-on ("pro" my rear-end!) memory which Apple provide. It simply isn't possible to add more. Memory pressure and slowdown tend to get critical when Safari exceeds 10GB. I did once persist to the point where it was using over 13GB. When restarted with all tabs manually revisited to ensure all pages are loaded, it'll go back to about 2.5Gb. A leak of that size is utterly indefensible.

This is a stark change in behaviour from Safari 7, which behaved basically fine in this regard - yet there are surprisingly few reports of it online. It isn't a subtle problem and Safari 8 has been around for ages. Others would have noticed, yet few report it.

I see it on my 10.9.5 machine, 10.10 home laptop, 10.11 test laptop and even, more recently, a 10.10 laptop at work. My conclusion is that this must be Safari screwing up when particular bookmark, cookie, cache and/or other data is present and this data must be part of the stuff it shares over iCloud - otherwise I would not have expected my independently clean-installed-by-IT-vendor work laptop to exhibit exactly the same behaviour.

Bottom line is that this seems to be a user data thing. Taking a deep breath and doing a complete Safari reset - ditching your iCloud bookmarks, emptying everything from every Safari instance on the iCloud account, deleting ~/Library/Safari and so-on - might work according to the Developer Forums. But as ever with Apple since roughly OS X 10.7, its a heisenbuggy mess and no amount of psuedorandom chicken slaying will be guaranteed to fix your issue.

Closed tab stray processes might just be down to a "bad extension", but that's no excuse - extensions are under Safari control, and a bad extension should never be able to break the browser. It's just JavaScript code executing completely under the browser's oversight. Still, we know that Safari must have very poor code for extension support given the problematic history, so that's always worth investigating if you haven't already.