Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

O que é a coleta de lixo em Java?

O que é a coleta de lixo em Java?


Coleta de lixo em Java é um processo pelo qual os programas executam o gerenciamento de memória automaticamente. O Garbage Collector(GC) encontra os objetos não utilizados e os exclui para recuperar a memória. Em Java, a alocação dinâmica de memória de objetos é feita usando o operador new que usa alguma memória e a memória permanece alocada até que haja referências para o uso do objeto.

Quando não há referências a um objeto, supõe-se que ele não seja mais necessário, e a memória ocupada pelo objeto pode ser recuperada. Não há necessidade explícita de destruir um objeto, pois o Java lida com a desalocação automaticamente.

A técnica que faz isso é conhecida como Coleta de lixo . Programas que não desalocam memória podem eventualmente travar quando não houver mais memória no sistema para alocar. Dizem que esses programas têm vazamentos de memória.

A coleta de lixo em Java acontece automaticamente durante a vida útil do programa, eliminando a necessidade de desalocar memória e, assim, evitando vazamentos de memória.

Na linguagem C, é responsabilidade do programador desalocar a memória alocada dinamicamente usando a função free(). É aqui que o gerenciamento de memória Java leva.

Observação:todos os objetos são criados em Heap Seção de memória. Mais sobre isso em um tutorial posterior.

Exemplo:para aprender o mecanismo do coletor de lixo em Java


Etapa 1) Copie o código a seguir em um editor.
class Student{
int a;
int b;

  public void setData(int c,int d){
    a=c;
    b=d;
  }
  public void showData(){
    System.out.println("Value of a = "+a);
    System.out.println("Value of b = "+b);
  }
  public static void main(String args[]){
    Student s1 = new Student();
    Student s2 = new Student();
    s1.setData(1,2);
    s2.setData(3,4);
    s1.showData();
    s2.showData();
    //Student s3;
    //s3=s2;
    //s3.showData();
    //s2=null;
    //s3.showData();
    //s3=null;
    //s3.showData();
  }
}

Etapa 2) Salve, compile e execute o código. Conforme mostrado no diagrama, dois objetos e duas variáveis ​​de referência são criados.



Etapa 3) Descomente linha # 20,21,22. Salve, compile e execute o código.

Etapa 4) Conforme mostrado no diagrama abaixo, duas variáveis ​​de referência estão apontando para o mesmo objeto.



Etapa 5) Descomente a linha # 23 e 24. Compile, salve e execute o código

Etapa 6) Conforme mostrado no diagrama abaixo, s2 se torna nulo, mas s3 ainda está apontando para o objeto e não é elegível para coleta de lixo java.



Etapa 7) Descomente a linha # 25 e 26. Salve, compile e execute o código

Etapa 8) Neste ponto não há referências apontando para o objeto e torna-se elegível para coleta de lixo. Ele será removido da memória e não há como recuperá-lo.


Como excluir um objeto em Java?


1) Se você quiser tornar seu objeto elegível para a Coleta de Lixo, atribua sua variável de referência a null.

2) Tipos primitivos não são objetos. Eles não podem ser atribuídos como nulos.



Java

  1. Operadores Java
  2. Interface Java
  3. Java try-with-resources
  4. Anotações Java
  5. Variável estática em Java:o que é bloco e método estático [exemplo]
  6. Interface vs classe abstrata em Java:qual é a diferença?
  7. Sobrecarga de construtor em Java:o que é e exemplos de programas
  8. Java - Framework de coleções
  9. Java 10 - Coleta de lixo aprimorada
  10. Java 10 - Alocação de heap