JavaScript: Gerenciamento de memória


JavaScript: Gerenciamento de memória

(Memory Leak)

Faz algum tempo que estou estudando o JavaScript um pouco mais a fundo, e pensando sempre em compartilhar tudo que tenho aprendido, resolvi escrever sobre o seu gerenciamento de memória.

Introdução

O JavaScript aloca memória automaticamente quando cria: objetos, strings, functions … etc, e libera quando esses dados não são mais utilizados, esse processo é chamado de Garbage Collection (GC).

Esse processo ocorre em todas as linguagens de alto nível, diferente das de baixo nível como o C que tem os métodos malloc() e free()para fazer esse gerenciamento.

Esse processo pode facilmente gerar uma confusão e dá a impressão aos desenvolvedores JavaScript (e de outras linguagens de auto nível) que não precisam se preocupar com o consumo de memória. Isso é um grande erro na minha opinião.

Mesmo trabalhando com linguagens de alto nível, devemos sempre nos preocupar com o gerenciamento de memória, pois existem muitos perfis de usuários. Pensando nisso, criei alguns tópicos abaixo para que você possa conhecer um pouco a mais desse processo.


Ciclo de vida da memória

Analisando um fluxo básico de gerenciamento de memória nos temos:

  • Alocação de memória
  • Utilização (ler, escrever)
  • Liberação de memória alocada quando não é mais necessária

Pensando em linguagens de alto nível como: JavaScript, C# … etc o terceiro passo e gerenciado pelo GC.

Agora para que você possa ter um melhor entendimento, veja abaixo cada um desses passos, focando na linguagem JavaScript.

Alocação de memória

Nosso primeiro passo será entender como funciona alocação de memória.

var n = 2479000; // aloca memória para um número
var s = "kratos"; // aloca memória para uma string 
// aloca memória para um objeto e seus valores
var obj = {
  a: 13,
  b: null
}; 

// (assim como o objeto) aloca memória para o vetor e 
// seus valores contidos
var a = [1, null, "abra"]; 
// aloca uma função (que é um objeto que pode ser chamado)
function f(a){
  return a + 2;
}

Alocação via chamada de função

Algumas funções quando chamadas resultam na alocação de um objeto.

var d = new Date();
// aloca um elemento do DOM
var date = document.createElement('div');

Alguns métodos alocam novos valores ou objetos:

var s = "kratos";
var s13 = s.substr(0, 3); // s13 é uma nova string

Utilização de valores

A utilização de valores basicamente significa leitura e escrita em memória alocada. Isto pode ser feito:

  • ao ler ou escrever o valor de uma variável
  • no acesso de uma propriedade de um objeto
  • ao passar um argumento para uma função

Memory leak

Para finalizar esse artigo achei legal passar um pouco sobre memory leak. Caso você ainda não tenha ouvido nada sobre esse assunto, “memory leak” ou traduzindo para o português “vazamentos de memória” é um problema que a grande maioria de nós desenvolvedores já passou. Esse problema ocorre quando uma porção de memória alocada para uma determinada operação, não é liberada quando não é mais necessária. Caso tenha interesse em saber mais sobre esse assunto, segue link de um artigo bem completo sobre esse assunto Beyond Memory Leaks in JavaScript criado por @daniel.reis.

Bom, espero que tenham gostado é até um próximo artigo 😉

Compartilhe:

Share on facebook
Facebook
Share on twitter
Twitter
Share on pinterest
Pinterest
Share on linkedin
LinkedIn

Table of Contents

Postagens Relacionadas

Chansondouce

Chanson douce

Chanson douce () – Drama, Crime – 1h 40min –   Nota: 6/10   Sinopse     Elenco Leïla Bekhti Como – Myriam Karin Viard
OutpostInfernoNegro

Outpost 2: Inferno Negro

O ano é 1945, 2ª Guerra Mundial, e um cientista alemão de nome Klausener está trabalhando em uma tecnologia nova e assustadora que tem o poder de criar um ex…
Atrevimiento

Atrevimiento

Atrevimiento () – Mistério – 0h 0min –   Nota: 7/10   Sinopse     Elenco Tomás Becerra Como – Ángel Romero Flores Como –