mozilla

Compare Revisions

Common causes of memory leaks in extensions

Change Revisions

Revision 49900:

Revision 49900 by Sheppy on

Revision 49901:

Revision 49901 by nnethercote on

Title:
Common causes of memory leaks in extensions
Common causes of memory leaks in extensions
Slug:
Extensions/Common_causes_of_memory_leaks_in_extensions
Extensions/Common_causes_of_memory_leaks_in_extensions
Tags:
Extensions, Add-ons, memory
Extensions, Add-ons, memory
Content:

Revision 49900
Revision 49901
n14      <a href="/en/Zombie_compartments" title="Zombie compartmentn14      <a href="/en/Zombie_compartments" title="Zombie compartment
>s">Zombie compartments</a> are a particular kind of memory leak.&>s">Zombie compartments</a> are a particular kind of memory leak.&
>nbsp; All zombie compartments in extensions are caused by a failu>nbsp; All zombie compartments in extensions are caused by a failu
>re to release resources appropriately in a certain circumstances,>re to release resources appropriately in certain circumstances, s
> such as when a window is closed, a page unloads, or an extension>uch as when a window is closed, a page unloads, or an extension i
> is disabled or removed.>s disabled or removed.
n78      One would normally expect that the interval (or timer) wouln78      One would normally expect that the interval (or timer) woul
>d be destroyed as soon as the document unloads, same as event lis>d be destroyed as soon as the document unloads, in the same way t
>teners are automatically destroyed. However, while this is still >hat event listeners are automatically destroyed. However, while t
>true, the {{ domxref("window.setInterval()") }} in the example or>his is still true, the {{ domxref("window.setInterval()") }} in t
>iginates from the outer chrome window (<code>browser.xul</code>) >he example originates from the outer chrome window (<code>browser
>and not from the content window. Hence the interval will only be >.xul</code>) and not from the content window. Hence the interval 
>destroyed when the outer window is unloaded, i.e. when the user c>will only be destroyed when the outer window is unloaded (i.e. wh
>loses the whole browser window, but not when the content window u>en the user closes the whole browser window) but not when the con
>nloads, i.e. when the user closes the tab. The interval function >tent window unloads (i.e. when the user closes the tab). The inte
>in the example would still hold a reference to <code>contentDoc</>rval function in the example would still hold a reference to <cod
>code>, therefore leaking the content document and the associated >e>contentDoc</code>, therefore leaking the content document and t
>window and compartment.>he associated window and compartment.
n96  // the new DOM node holding a reference to leakrefn96  // The new DOM node holding a reference to leakref
t98  // will leak the whole bootstrap compartmentt98  // will leak the whole bootstrap compartment.

Back to History