DEV Community

Cover image for Aplicando a Orientação a Objetos: Gerenciamento de memória [4/10]🧶
Majulia Carvalho
Majulia Carvalho

Posted on

Aplicando a Orientação a Objetos: Gerenciamento de memória [4/10]🧶

Podendo identificar classes, atributos, métodos, instância e objeto, conseguiremos entender o básico de gerenciamento de memória antes de seguir em frente.

O ecossistema .net possui ferramentas de gerenciamento como o CLR e o Garbage Collector, que trabalham para ajudar em um maior desempenho de desenvolvimento. Por isto, quando programamos, não há necessidade de gerenciar memória e seus espaços manualmente já que o próprio .net cuida disso.

Quando falamos de memória, nos deparamos com a stack e heap que estão diretamente atreladas aos tipos valor e referência. Primeiro vamos entender as memórias.


Stack

Stack é uma memória menor que a heap e por isso fornece informações de forma mais ágil. Ela armazena dados do tipo valor que são dados que não ocupam muito espaço na memória e são passados diretamente para as variáveis (de tipos primitivos como bool, int, double, structs - considerados dados leves -) ou valores que referenciam posições da heap.

Funcionamento da stack

Ao criar uma variável de tipo primitivo, ela fica presente na stack onde o compilador tem fácil acesso a ela. Se esta variável armazenar uma referência, é possível que o compilador acesse mais fácilmente a posição de um objeto na heap.


Heap

Heap por ser maior, possui a capacidade de armazenar dados maiores como objetos. Se lembrarmos do comando new utilizado para instanciar objetos, podemos ter uma maior clareza do que está acontecendo por baixo dos panos:

classe carro

  • A classe carro possui dois atributos: placa e ano

    carro instanciado

  • A cima estamos instanciando um carro

  • Quando instanciamos um objeto, ele será criado na memória heap, dessa forma:

Heap com objeto armazenado

Dados mais pesados são armazenados na heap, e eles são do tipo valor, pois as informações se encontram na heap. Para acessarmos este objeto, pegamos a referência a ele, que é justamente uma variável presente na stack. Então podemos entender que quando criamos uma variável para criar um objeto, não fazemos nada mais que criar uma referência da heap para ele🐣 Uma forma mais visual de representar isso:

Valor Referência

Nesta sessão, pudemos entender a diferença entre as duas memórias e os tipos de valores presentes nelas. Isto é importante porque em determinados momentos precisamos saber de onde vem o objeto que estamos manipulando.

Top comments (0)