this post was submitted on 06 Sep 2023
268 points (97.2% liked)
Firefox
17947 readers
75 users here now
A place to discuss the news and latest developments on the open-source browser Firefox
founded 4 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Your OS should do this automatically, your programs shouldn't worry about cold memory.
Your OS can't decide when a tab is inactive though, given that they can run code, play media, etc. at arbitrary times.
Firefox can't either, because pretty much any page today will have JavaScript running.
The only way it works is to force tabs that haven't been opened in some time to unload regardless of activity... but that's something that the vast majority of users would not appreciate. For power users there are a ton of "tab unloader" add-ons that do this.
maybe @Eggymatrix ment swapping.
The OS tracks which memory-pages are used least and will swap them out when active programs need more ram than available.
Swapping anonymous pages is an extremely poor "solution" to cold memory. It's the big hammer approach that technically always works but isn't optimal for ...anything really. That's the best the kernel can easily and quickly know however which is why it's done at all.
It'd be much better if the process could shave off memory usage using its own domain knowledge. In the example of firefox, it's much faster and less jarring to the user to have 10 tabs reloaded from the web (browser shows a spinner as usual, doesn't lag) rather than swapped back in from disk (entire browser lags and it probably even takes longer).
There's no reliable mechanism to signal any of this to me knowledge however, so processes must guess the right time to do discard memory pre-emtively.
I believe you are mistaken, there is no way that reloading a tab from the web is faster than it being read from the disk.
For this you have to know that what gets swapped to disk is not the static content that you'd load upon opening a website, it's the entire memory used by the tab.
Static web content is usually kilobytes to megabytes and is also largely cached (on disk even). A tab's memory usage OTOH ranges from dozens to hundreds of MB.
Even a fast drive needs quite a long time (in computer terms) to load something like that, especially given that the access is likely not sequential and has a low queue depth.
Edge does this very aggressively and I hate it… Also I believe that Chromium based browsers use more memory per tab, so that might be the reason why it feels more aggressive. Firefox does this very rarely.