Résumé de la mémoire frontale

problème de mémoire

fuite de mémoire

Cela signifie que la mémoire est demandée mais pas libérée, ce qui entraîne un gaspillage d'espace mémoire. Un dicton courant dit que quelqu’un occupe les latrines et refuse de faire caca.

cause

  • variables globales
function leaks(){
    
      
  leak = 'xxxxxx';    //leak 成为一个全局变量,不会被回收
}
  • Fermeture : Le concept de fermeture est que j'ai une zone de code qui utilise une variable dans la zone externe. Avant que cette zone de code ne soit exécutée, la variable externe ne doit pas être libérée. C'est la fermeture.
var leaks = (function(){
    
      
    var leak = 'xxxxxx';// 被闭包所引用,不会被回收
    return function(){
    
    
        console.log(leak);
    }
})()

  • Une référence au DOM. La référence existe toujours lorsque le dom est effacé. L'attribut ajouté à l'objet DOM est une référence à un objet.
<div id="container"></div>
$('#container').bind('click', function(){
    
    
    console.log('click');
}).remove();
  • minuteur
var someResource = getData(); 
setInterval(function() {
    
     
    var node = document.getElementById('Node'); 
    if(node) {
    
     
        // 处理 node 和 someResource 
        node.innerHTML = JSON.stringify(someResource)); 
    } 
}, 1000); 

UncaughtException/console.erreur

débordement de mémoire

Il n'y a pas assez d'espace mémoire lors de la demande de mémoire. En termes simples, vous allez dans une fosse accroupie et constatez que la fosse est pleine.

Mécanisme de collecte des déchets

L’orthographe complète de garbage collection GC est Garbage Collection.

marquer clairement

Phase de marquage : à partir de la collection racine, marquez tous les objets actifs et leurs sous-objets.
Phase de nettoyage : parcourez le tas et connectez les objets inactifs (non marqués) à la liste libre.

L'avantage est qu'il est simple à mettre en œuvre et facile à combiner avec d'autres algorithmes.
L'inconvénient est qu'il est fragmenté, ce qui conduira à d'innombrables petits blocs dispersés dans le tas. La vitesse d'allocation n'est pas idéale. Chaque allocation nécessite de parcourir le segment libre. list pour trouver un bloc suffisamment grand.

compression de balises

Semblable au "mark-sweep", mais après la phase de marquage, il dispose tous les objets actifs étroitement d'un côté du tas (compression), éliminant ainsi la fragmentation de la mémoire, mais la compression nécessite un coût de calcul

Avantages
: Le tas est utilisé efficacement, il n'y aura pas de fragmentation de la mémoire, et il n'utilisera pas qu'une partie du tas comme l'algorithme de copie.

Inconvénients
Surcharge du processus de compression, nécessitant plusieurs recherches dans le tas

compter les références

Le comptage de références enregistre le nombre de fois que chaque objet est référencé. Chaque fois qu'un objet est créé, qu'une référence est attribuée et qu'une référence est supprimée, le compteur est mis à jour. Si la valeur du compteur est 0, la mémoire est recyclée directement. De toute évidence, le plus grand avantage du comptage de références est le temps de pause court.

Avantages
 : Les déchets peuvent être recyclés immédiatement.
Le temps de pause maximum est court
. Il n'est pas nécessaire de rechercher le long du pointeur. Ne commencez pas la recherche le long de l'ensemble racine comme l'algorithme de balayage de marque. Inconvénients : L' augmentation et la diminution du compteur sont
lourd . Le compteur doit occuper de nombreux bits pour mettre en œuvre une implémentation lourde et complexe. Chaque opération d'affectation doit être remplacée par une opération de mise à jour de référence. Les références circulaires ne peuvent pas être recyclées.



d'autres problèmes

Si la profondeur de pile demandée par le thread est supérieure à la profondeur maximale autorisée par la machine virtuelle,une exception StackOverflowError sera levée.
Si la mémoire de pile de la machine virtuelle permet une expansion dynamique, lorsque la capacité de pile étendue ne peut pas s'appliquer pour suffisamment de mémoire, une exception OutOfMemoryError sera levée.

Je suppose que tu aimes

Origine blog.csdn.net/qq_29334605/article/details/123753426
conseillé
Classement