1 / 11

O que é Garbage Collector?

O que é Garbage Collector?

sakina
Download Presentation

O que é Garbage Collector?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. O que é Garbage Collector? É o coletor de lixo que é utilizado pela JVM para a limpeza da memória. Não se pode prever quando o mesmo será executado, porém, pode solicitar explicitamente (através do método System.gc();) a ação do garbage colector, o qual não necessariamente será executado no momento da solicitação.

  2. Como Funciona? O Coletor de lixo funciona da seguinte forma: de tempos em tempos, o garbage colector ( quando acionado pela JVM) verifica se todos os objetos alocados na memória estão sendo referenciados por alguma variável, caso não estejam, o mesmo remove o objeto da memória para que o espaço possa ser reutilizado.

  3. Código Para Constatação publicclass Lixo{ publicstaticvoid main(String[] args) throws Exception { int cont=0; int[] array = null; while(true) { array = newint[1000]; System.out.println("Bytes livres: "+Runtime.getRuntime().freeMemory()); Thread.sleep(200); cont++; if(cont==100){ break; } } } }

  4. O que aconteceu? Bytes livres: 1703304 Bytes livres: 1699288 Bytes livres: 1606024 Bytes livres: 1591520 Bytes livres: 1510304 Bytes livres: 1908872 Bytes livres: 1892808

  5. As vantagens # liberdade do programador que não esta mais obrigado a ficar atento a detalhes de memória; # há menos bugs de gerenciamento de memória; # gerenciamento automático é mais eficiente que o manual.

  6. Desvantagens: # O desenvolvedor tende a estar mais desatento em relação a detalhes de memória; # O gerenciador automático apresenta limitações. # O processo reduz o desempenho do aplicativo

  7. Código com solicitação da reciclagem de memória //... while(true) { //... if(cont==50){ System.out.println("\n Solicitando...\n"); System.gc(); } if(cont==168){ System.out.println("\n garbage colector acionado pela JVM...\n"); } //... }

  8. Resultado solicitando... coletor acionado pela JVM Bytes livres: 1871664 Bytes livres: 1910032 Bytes livres: 1402408 Bytes livres: 1810528 Bytes livres: 1897984 Bytes livres: 1398392 Bytes livres: 1792008 Bytes livres: 1798752 Bytes livres: 1907928 Bytes livres: 1696288 Bytes livres: 1692072 Bytes livres: 1899896 Bytes livres: 1596856 Bytes livres: 1406424

  9. O método finalize O método finalize() é chamado pelo coletor de lixo para realizar limpeza de terminação sobre um objeto um pouco antes de o coletor de lixo reivindicar a memória do objeto. Um problema com relação a este método é que não há garantias de o coletor de lixo executar em um momento pré definido.

  10. Conclusão Em informática poucas vezes uma solução não cria novos problemas . Isto é, o garbage collector é um processo relativamente demorado e de alta prioridade que tem impacto em todo o programa que esta sendo executado. Este processo é automático (promovido pela jvm), mas o programador pode solicitar a atuação do mesmo através do comando System.gc(). Obs.: Não será necessariamente executado no momento da solicitação.

  11. Bibliografia # Java Como programar 6ª edição # Estrutura de dados e Algoritmos em Java 4ª Edição # Foruns e Pesquisas na internet

More Related