Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

192
Visualizações
Eliminación de propiedades de una matriz de objetos, impacto en la memoria

Estoy procesando una gran variedad de objetos en una aplicación de nodo y, en algún momento, quiero eliminar dos propiedades de todos los objetos de la matriz.

Al mismo tiempo estoy midiendo el impacto de la memoria del nodo en rss (Residente Set Size).

Lo que estoy encontrando es que solo el acto de eliminarlos consume mucha memoria.

Ejemplo, en realidad es mucho más grande y con muchos objetos. El tamaño del archivo de json es de 200 MB.

 [ { keep: 'foo', prop1: 'remove', prop2: 'remove' },... ]

Esto consume la mayor parte de 500 MB va a 1000 MB

 const clean = original.map((obj) => { delete obj.prop1 delete obj.prop2 return obj })

Esto también consume mucho, también alrededor de 1000 MB

 original.forEach((obj) => { delete obj.prop1 delete obj.prop2 })

Este es el que menos consume, ronda los 650 MB

 const clean = original.map(({ prop1, prop2, ...obj }) => obj)

Pero si no los elimino en absoluto, entonces no consume más de los 500 MB originales. ¿Qué está pasando? ¿No debería quitar propiedades aligerar la memoria?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede usar cualquiera de las llamadas .map() que proporcionó (son más rápidas que .forEach() ).

Cuando haya completado la eliminación, simplemente establezca la variable original en nulo. Esto permitirá que el motor JS marque esta variable para la recolección de basura y se eliminará de la memoria. No verá el resultado de inmediato, ya que no tenemos idea de cuándo se ejecutará GC y no podemos controlarlo. Pero la memoria será recuperada muy rápidamente.

Como esto:

 const clean = original.map((obj) => { delete obj.prop1 delete obj.prop2 return obj }) original = null;
 const clean = original.map(({ prop1, prop2, ...obj }) => obj); original = null;

El problema aquí es que nosotros, como desarrolladores web, no tenemos ningún control sobre el consumo de memoria aparte de lo que he propuesto. Internamente, el motor V8 decide cómo se organizan las cosas en la memoria y todos los problemas de gestión de la memoria quedan relegados a él.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda