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

167
Visualizações
Cómo medir la memoria total utilizada por una sola función

Me pregunto cómo medir la memoria total utilizada por la función en JavaScript. Descubrí que hay una API performance.memory . Me di cuenta de que usedJSHeapSize no es solo para una sola página, sino que también puede compartir el resumen entre otras pestañas. Supongamos que, en mi caso, siempre he abierto solo una pestaña, por lo que debo medir la memoria solo de esta pestaña que me interesa. También leí que debo esperar un tiempo después de la ejecución de la función para permitir que el recolector de basura borre toda la memoria no utilizada. . Al final, se me ocurrió una solución a continuación, pero no sé si es una buena idea y es la forma en que mido la memoria correcta. Si tiene alguna idea al respecto, hágamelo saber, por favor.

 function wait(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } function fun1() { // function logic... } function fun2() { // function logic... } function measureMemory(functionToMeasure) { const memoryStart = performance.memory.usedJSHeapSize; functionToMeasure(); const memoryEnd = performance.memory.usedJSHeapSize; return memoryEnd - memoryStart; } async function runBenchmark() { const totalMemoryUsedByFun1 = measureMemory(fun1); // I wait 2min to be sure garbage collector clean all unused memory await wait(120000); const totalMemoryUsedByFun2 = measureMemory(fun2); }

¿Qué piensas, es un buen enfoque/idea de medir la memoria utilizada por función? ¿2min es tiempo suficiente para que el recolector de basura borre la memoria no utilizada?

Ejemplo de lo que me preocupa:

 function fun1() { // alocates 1000KB } function fun2() { // alocates 300KB } // initial heap size = 0 const memoryUsedByFun1 = measureMemory(fun1()); // Heap size is equal 1000KB // Now let's say I do not wait for GC and only 500KB have been released // heap size before measuring fun2 is equal to 500KB const memoryUsedByFun2 = measureMemory(fun2()); // While fun2 is running, 500KB of fun1 allocations have been released // So now if I do memoryStart - memoryEnd // Where memory start was 500KB and memory end is equal to 300KB // because 500KB was released while computing fun2 // I will get result 500KB - 300KB = 200KB // What is not true because fun2 allocates 300KB)

También he visto que existe tal API measureUserAgentSpecificMemory() , pero creo que esta API no funciona en absoluto incluso después de activar #experimental-web-platform-features

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

0

¿Por qué estás esperando al recolector de basura?

Ya está diferenciando memoryEnd - memoryStart por lo que incluso si todavía tiene memoria residual asignada en el montón cuando comienza, verá la diferencia al final.

¿Le preocupa que gc limpie la memoria residual MIENTRAS se ejecuta la segunda función?

Por lo general, gc se ejecuta exactamente después de llamar a una función. Si tiene referencias circulares, usará el algoritmo de marca y barrido para recolectar basura más tarde, ya que no puede determinar con el algoritmo de conteo de referencias si el objeto todavía se usa (pero supongo que espera a que la pila esté libre para ejecutarlo). —- LE: En realidad no espera por lo que tu preocupación es válida.

Aquí hay un buen artículo que encontré sobre el recolector de basura en js

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