7/25/2019 03- Garbage Collector
1/30
Slide 1
ProfessorLauro Barreto Fontes, M.Sc.
GARBAGE COLLETCOR
Linguagem de Programao
7/25/2019 03- Garbage Collector
2/30
Slide 2
Agenda
Introduo
Funcionamento do Garbage Collector
Execuo do Garbage Collector
O mtodo finalize()
7/25/2019 03- Garbage Collector
3/30
Slide 3
Agenda
Preparando o objeto para a coleta
Obtendo dados sobre memria
Configuraes de memria
Ciclo de vida dos objetos
7/25/2019 03- Garbage Collector
4/30
Slide 4
Introduo
Exploraremos aqui alguns aspectos da linguagemde programao Java quanto utilizao damemria do computador.
7/25/2019 03- Garbage Collector
5/30
Slide 5
Introduo
Durante o seu ciclo de vida, uma aplicao Javaconsome recursos de memria conforme suanecessidade alocando espaos para reter asinformaes utilizadas durante o processamento.
7/25/2019 03- Garbage Collector
6/30
Slide 6
Cliente c = new Cliente();
Produto p = new Produto();
String s = Impacta;Object o = p;
c = new Cliente();
p = new Produto();s = null;
c p so
Introduo
7/25/2019 03- Garbage Collector
7/30
Slide 7
Introduo
c p so Aps a execuo deinstrues, a memriado computador podereter informaesdesnecessrias e nomais utilizadas pelaaplicao
Estas informaes soconsideradas lixo dememria.
7/25/2019 03- Garbage Collector
8/30
Slide 8
Introduo
Em linguagens de programao como C e C++, taisalocaes devem ser explicitamente removidas pelaaplicao a fim de liberar estes espaos de memria.
A no-liberao destes recursos de memria pode acarretara perda de performance da aplicao e impedir que outrasinformaes mais importantes sejam carregadas, causandofalhas como out of memory, stack overflow e, em algunscasos, reter lixo em memria mesmo aps o encerramento
da aplicao.
7/25/2019 03- Garbage Collector
9/30
Slide 9
Garbage Collector - Funcionamento
O Garbage Collector um recurso da linguagemJava responsvel pela limpeza automtica dasinformaes no mais utilizadas pela aplicao.
O Garbage Collector retira do programador Java aresponsabilidade de desalocar os recursos dememria utilizados pela aplicao.
7/25/2019 03- Garbage Collector
10/30
Slide 10
Garbage Collector - Execuo
O Garbage Collector automaticamente executado detempos em tempos pelo JVM.
Todavia, podemos programaticamente solicitar ao JVM aexecuo do Garbage Collector atravs da instruo abaixo:
System.gc();
Vale observar que o uso da instruo System.gc() no
garante que o JVM realize a execuo imediata do GarbageCollector, por questes de disponibilidade deprocessamento.
7/25/2019 03- Garbage Collector
11/30
Slide 11
O mtodo finalize()
Ao coletar cada um dos objetos considerados lixode memria, o Garbage Collector executa paracada um deles o mtodo finalize()
O finalize() tambm chamado de mtododestrutor um mtodo presente na classe Objecte, portanto, herdado por toda e qualquer classepresente na linguagem.
7/25/2019 03- Garbage Collector
12/30
Slide 12
O mtodo finalize()
O mtodo finalize() possui a funcionalidadeinversa ao mtodo construtor.
executado pelo GC quando o objeto elimidado
da memria.
7/25/2019 03- Garbage Collector
13/30
Slide 13
O mtodo finalize()
Ao criar uma classe, podemos sobrescrever o mtodofinalize() adicionando instrues de encerramento efinalizao.
public class Cliente {
......
protected void finalize() {...
gravarDados();enviarEmail();...
}}
7/25/2019 03- Garbage Collector
14/30
Slide 14
O mtodo finalize()
Um problema do mtodo finalize que no hgarantias de que o coletor de lixo ir execut-lo emuma hora especificada
Sendo assim, no fica claro SE ou QUANDO omtodo ser executado
Alguns autores sugerem a no utilizao domtodo
7/25/2019 03- Garbage Collector
15/30
Slide 15
Preparando o objeto para coleta
Um objeto considerado um candidato para coleta oucoletvel quando no possui mais nenhuma referncia naaplicao apontando para ele.
Existem tipicamente trs situaes em que o objeto
preparado para coleta tornando-se coletvel.
Excluso de referncia
Alterao de referncia
Isolamento de referncia
7/25/2019 03- Garbage Collector
16/30
Slide 16
Excluso de refernciaOcorre quando a varivel que aponta para aquele
objeto perde o seu escopo ou anulada
c = new Object();
....
....
c = null;
c
Preparando o objeto para coleta
7/25/2019 03- Garbage Collector
17/30
Slide 17
Alterao de refernciaOcorre quando a varivel que apontava para um
objeto passa a apontar para um outro objeto.
c = new Object();
....
....
c = new Object();
c
Preparando o objeto para coleta
7/25/2019 03- Garbage Collector
18/30
Slide 18
Isolamento de refernciaO Garbage Collector consegue identificar tambm
referncias circulares em sua aplicao,removendo-as caso seja necessrio
x = new Funcionario();
y = new Funcionario();
x.setEncarregado(y);
y.setEncarregado(x);y = null;
x = null;
x y
Preparando o objeto para coleta
7/25/2019 03- Garbage Collector
19/30
Slide 19
Obtendo dados sobre a memria
Durante a execuo de uma aplicao, podemosobter informaes de memria atravs da classe
java.lang.Runtime
Runtime runtime = Runtime.getRuntime();
long free = runtime.freeMemory();long total = runtime.totalMemory();long max = runtime.maxMemory();
System.out.printf("Memria livre : %,12d%n", free);System.out.printf("Memria total : %,12d%n", total);System.out.printf("Memria limite: %,12d%n", max);
7/25/2019 03- Garbage Collector
20/30
Slide 20
Configuraes de memria
Ao executar uma aplicao Java, podemos definira quantidade de memria que o sistemaoperacional disponibilizar para o JVM:
java -Xms128m -Xmx512m OlaMundo
7/25/2019 03- Garbage Collector
21/30
Slide 21
Configuraes de memria
-XmsDefine a quantidade inicial de memria a ser
utilizada pelo JVM.
-XmxDefine a quantidade mxima de memria que o
sistema operacional alocar para o JVM.
7/25/2019 03- Garbage Collector
22/30
Slide 22
Ciclo de vida dos objetos
Created
In use Invisible
Unreachablee
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
23/30
Slide 23
Ciclo de vida dos objetos
CreatedO ciclo de vida do objeto comea com oestado Created, quando o JVM j alocou
espao em memria para registrar todos osmembros de dados do objeto, mas aindano o inicializou.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
24/30
Slide 24
Ciclo de vida dos objetos
In useAps a criao, o JVM realiza ainicializao do objeto, executando ospassos na seguinte ordem
1. Incializa os membros da classe me;2. Executa o construtor da classe me;3. Inicializa os membros da prpria classe;4. Executa o construtor da prpria classe.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
25/30
Slide 25
Ciclo de vida dos objetos
InvisibleAo longo da aplicao, o objeto pode-se tornar invisvel.
Isto ocorre quando a(s) sua(s)referncia(s) est(o) fora do escopoatual, onde no podemos manipularaquele objeto diretamente.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
26/30
Slide 26
Ciclo de vida dos objetos
UnreachableUm objeto torna-se unreachable(inalcanvel) quando no h mais
nenhuma referncia (varivel)apontando para ele, tornando-secandidato a ser coletado.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
27/30
Slide 27
Ciclo de vida dos objetos
CollectedO objeto coletado aquele que j foiidentificado pelo GC para coleta mas
ainda no teve a oportunidade deiniciar o processo de finalizao deste.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
28/30
Slide 28
Ciclo de vida dos objetos
FinalizedO objeto considerado finalizadoquando o GC j executou o seu
mtodo finalize(), mas ainda nodesalocou o espao de memriaocupado por este.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
29/30
Slide 29
Ciclo de vida dos objetos
Deallocatedltima etapa do ciclo de vida do objeto.
Ao ser desalocado, o espao de
memria que antes era ocupado peloobjeto torna-se totalmente liberadocomo se o objeto nunca tivesse existido.
Created
In use Invisible
Unreachable
Collected
Finalized
Deallocated
7/25/2019 03- Garbage Collector
30/30
Slide 30
FIM!
Top Related