Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!