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
 | 
