Libérer la mémoire à la fermeture d’iframe

Prenons un cas concret: des iframe contenus dans des onglets type jQuery‐ui.

Onglets contenant des iframe

Onglets contenant des iframe

En ouvrant et fermant des onglets contenant un iframe, on se rend compte que la mémoire n’est jamais libérée par le navigateur. Les mesures ont été réalisées avec Internet Explorer. J’ai observé le même comportement avec Google Chrome. Firefox semble libérer correctement sa mémoire.

Évolution de la mémoire avec ouverture / fermeture d'onglets contenant un iframe

Évolution de la mémoire avec ouverture / fermeture d’onglets contenant un iframe

Il existe un petit truc pour permettre de libérer cette mémoire, et il faut le savoir. Je vous en fait donc profiter:

// Avant de retirer l'iframe du DOM
$("#container iframe").attr("src", "javascript:false");

// Ou au sein du code de l'iframe lui-même
// Dans le cas où vous avez accès à un événement avant la fermeture
window.location = "javascript:false"

Le résultat devient alors:

Utilisation mémoire lors de la création / suppression d'iframe

Utilisation mémoire lors de la création / suppression d’iframe

De même, ces mesures ont été réalisées sous Internet Explorer. La version 15 de Google Chrome ne semble par contre pas libérer la mémoire avec ce petit «truc».

On observe que la mémoire utilisée ne redescend pas forcément au même niveau qu’avant la création de l’iframe, mais la mesure de mémoire utilisée par un processus n’est pas très précise. Et le comportement dépend beaucoup de la gestion mémoire du navigateur lui‐même.

Commentaires

Un commentaire sur « Libérer la mémoire à la fermeture d’iframe »

  1. Jean-Loïc dit :

    Merci pour cette information très utile. En 6 lignes de code c’est réglé. Nickel !

Laisser un commentaire