Demostración de caso de referencia débil y recolección de basura de WeakMap

Característica de mapa débil

  1. WeakMap solo puede usar objetos como nombres clave (excepto nulo)

  2. Los objetos a los que se hace referencia mediante nombres clave son referencias débiles

  3. WeakMap no es transitable

Fuerte referencia:

let a = {
    
    name: "eric", age: 20}
let arr = [a, "other"]
当不需要时,需要手动切断引用,GC才能回收。
a = null;
arr[0] = null;
同理Map也是如此

Cita débil:

弱引用不参与垃圾回收的机制,也就是说GC在回收时不考虑弱引用的影响
当一个对象被回收后,相关的弱引用也会自动消失
比如
let a = {
    
    name: "eric", age: 20}
let wp = new WeakMap();
wp.set(a, new Array(10 * 1024 * 1024));
此时如果 a = null;
wp里的键名对象和所对应的键值对会自动消失,不用手动删除引用

Casos de uso para probar el proceso de recuperación de GC

1. Mapa

<button>null</button>
const buttonNode = document.querySelector("button");
let key = {
    
    
	name: "Eric",
	age: 20
}
let map = new Map();
map.set(key, new Array(10 * 1024 * 1024));

buttonNode.addEventListener("click", () => {
    
    
	key = null;
})

inserte la descripción de la imagen aquí

  1. Abra chromela consola, busque performance monitorel panel y podrá ver los js heap sizeaprox. iniciales.45M
  2. Haga clic buttonen el botón para keyconfigurarlo null, luego haga clic en chromeel ícono Memonydel panel de la consola GC(la papelera a la izquierda) y vuelva a verificar js heap sizesi 45M(sin cambios)

2.Mapa débil

<button>null</button>
const buttonNode = document.querySelector("button");
let key = {
    
    
  name: "Eric",
  age: 20
}
let wp = new WeakMap();
wp.set(key, new Array(10 * 1024 * 1024));

buttonNode.addEventListener("click", () => {
    
    
	key = null;
})

inserte la descripción de la imagen aquí

  1. Abra chromela consola, busque performance monitorel panel y podrá ver los js heap sizeaprox. iniciales.45M
  2. Haga clic buttonen el botón para keyestablecerlo en null, luego haga clic en chromeel ícono Memonydel panel de la consola GC(la papelera a la izquierda) y vuelva a verificar js heap size( 3Mobviamente más pequeño)
  3. Significa que GC ha reclamado la memoria a la que se hace referencia en wp.
  4. En resumen, se demuestra el débil mecanismo de referencia de WeakMap.

Supongo que te gusta

Origin blog.csdn.net/mochenangel/article/details/125503606
Recomendado
Clasificación