forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
Tab Unloading
 | 
						||
=============
 | 
						||
 | 
						||
Tab Unloading is a feature that automatically unloads tabs to prevent Firefox
 | 
						||
from crashing due to insufficient memory when the system’s available memory is
 | 
						||
low.
 | 
						||
 | 
						||
The feature consists of two parts: memory pressure detector and tab unloader.
 | 
						||
When the memory pressure detector detects a low memory situation, it triggers
 | 
						||
the tab unloader that prioritizes tabs and chooses a tab to unload, or if there
 | 
						||
are no unloadable tabs, triggers the internal memory-pressure warning allowing
 | 
						||
the browser’s subsystems to reduce their memory use.
 | 
						||
 | 
						||
There are two modes to prioritize tabs.
 | 
						||
 | 
						||
Firefox basically unloads tabs in least-recently-used order, excluding
 | 
						||
tabs playing media, using Picture-in-Picture, or using WebRTC.  Pinned
 | 
						||
tabs are deprioritized and are less likely to be unloaded.
 | 
						||
 | 
						||
When there are more tabs opened, in most cases when there are more than
 | 
						||
eleven tabs, Firefox does extra calculations identifying processes hosting
 | 
						||
tabs and estimates memory usage of each tab, and then unloads tabs with
 | 
						||
larger memory and more processes that will be terminated by tab unloading.
 | 
						||
 | 
						||
You may disable the feature by setting the preference
 | 
						||
``browser.tabs.unloadOnLowMemory`` to ``false``.
 | 
						||
 | 
						||
about:unloads
 | 
						||
-------------
 | 
						||
 | 
						||
The about:unloads page shows how Firefox prioritizes tabs and which tab will
 | 
						||
be unloaded when the tab unloader is triggered.  You can trigger tab unloading
 | 
						||
manually by clicking the **Unload** button in the page.
 | 
						||
 | 
						||
The page contains a table where existing tabs are displayed in the same order
 | 
						||
used by Firefox to choose the next tab to unload.  When you click the button,
 | 
						||
a tab shown in the first row, which has the lowest value in the **Priority**,
 | 
						||
is unloaded.  If the value of **Priority** is a hyphen (-), the corresponding
 | 
						||
tab is not unloadable.
 | 
						||
 | 
						||
In the first of the two modes mentioned above, Firefox calculates **Last Accessed**
 | 
						||
and **Base Weight** for each tab and orders tabs by those values, not calculating
 | 
						||
the other attributes such as **Secondary Weight** to save CPU power.  Below is
 | 
						||
an example of this case.
 | 
						||
 | 
						||
.. image:: lightmode.png
 | 
						||
 | 
						||
In the second mode, Firefox identifies processes hosting each tab and shows
 | 
						||
their process IDs in the **Process IDs** column.  Process IDs are displayed in
 | 
						||
**bold** when they are hosting the tab’s top frame, and in *italic* when the
 | 
						||
process is shared between different tabs.
 | 
						||
 | 
						||
After identifying the processes of all tabs, Firefox estimates memory usage of
 | 
						||
tabs and calculates the secondary weight for tabs that are not recently accessed.
 | 
						||
For recently accessed tabs, Firefox does not calculate the **Secondary Weight**
 | 
						||
and **Memory**, leaving those columns empty.
 | 
						||
 | 
						||
.. image:: fullmode.png
 |