Você está na página 1de 3

07/12/2014

online.unip.br/imprimir/imprimirconteudo

.NETFrameworkVersion:2.0,3.5
Gerenciamentoautomticodememria
GerenciamentoautomticodememriaumdosserviosqueoCommonLanguageRuntimefornece
duranteaExecuoGerenciada.OcoletordelixodoCommonLanguageRuntimegerenciaaalocaoe
liberaodememriaparaumaplicativo.Paradesenvolvedores,issosignificaquevocnotemque
escrevercdigoparaexecutartarefasdegerenciamentodememriaquandovocdesenvolveraplicativos
gerenciados.Gerenciamentoautomticodememriapodeeliminarproblemascomuns,comoesquecerde
liberarumobjetoecausarumvazamentodememria,outentaracessaramemriadeumobjetoquej
tinhasidoliberado.Estaauladescrevecomoocoletordelixoalocaeliberamemria.
Alocandomemria
Quandovocinicializaumnovoprocesso,otempodeexecuoreservaumaregiocontnuadeespaode
endereoparaoprocesso.Esteespaodeendereoreservadochamadodeheapgerenciada.Aheap
gerenciadamantmumponteiroparaoendereoondeoprximoobjetodaheapseralocado.
Inicialmente,esseponteirodefinidocomoEndereobsicodaheapgerenciada.Todosostiposde
refernciasoalocadosnaheapgerenciada.Quandoumaplicativocriaoprimeirotipodereferncia,
alocadamemriaparaotiponoEndereobsicodaheapgerenciada.Quandooaplicativocriaoprximo
objeto,ocoletordelixoalocamemriaparaelenoespaodeendereoimediatamenteapsoprimeiro
objeto.Desdequeexistaespaodeendereodisponvel,ocoletordelixocontinuaaalocarespaopara
novosobjetosdessamaneira.
Alocarmemriadeheapgerenciadamaisrpidoqueaalocaodememrianogerenciada.Pelofato
dequeoRuntimealocamemriaparaumobjetoadicionandoumvaloraumponteiro,elequaseto
rpidoquantoaalocaodememriadapilha(stack).Almdisso,porquenovosobjetosquesoalocados
consecutivamentesoarmazenadoscontinuamentenaheapgerenciada,umaplicativopodeacessaros
objetosmuitorapidamente.
Liberandomemria
Omecanismootimizadodocoletordelixodeterminaomelhormomentoparaexecutarumacoletacom
basenasalocaessendofeitas.Quandoocoletordelixoexecutaumacoleta,eleliberaamemriados
objetosquenoestosendousadospeloaplicativo.Eledeterminaquaisobjetosnoestomaissendo
usadospeloexamedasrazesdoaplicativo.Cadaaplicativotemumconjuntoderazes.Cadaraizrefere
seaumobjetonaheapgerenciadaoudefinidacomonula.Razesdoaplicativoincluemponteirospara
objetosglobaiseestticos,variveislocaiseparmetrosdeobjetosdereferncianapilhadeum
segmento,eregistrodaCPU.Ocoletordelixotemacessolistaderazesativasmantidaspeloruntimee
peloCompiladorJustInTime(JIT).Usandoessalista,eleexaminaasrazesdoaplicativo,enoprocesso
criaumgrficoquecontmtodososobjetosquepossamseralcanadosapartirasrazes.
Objetosquenoestonogrficosoinacessveisapartirdasrazesdoaplicativo.Ocoletordelixo
consideracomolixoosobjetosinacessveiseirliberaramemriaalocadaparaeles.Duranteumacoleta,
ocoletordelixoexaminaaheapgerenciada,procurandopelosblocosdeespaodeendereoocupadospor
objetosinacessveis.Namedidaemqueeledescobrecadaobjetoinacessvel,eleusaumafunodecpia
dememriaparacompactarosobjetosacessveisnamemria,liberandoosblocosdeespaosendereo
alocadosparaobjetosinacessveis.Umavezqueamemriaparadosobjetosacessveistiversido
compactada,ocoletordelixofazascorreesdeponteirosnecessriasrazesdeformaqueasrazesdo
aplicativoapontemparaosobjetosemseusnovoslocais.Eletambmposicionaoponteirodaheap
gerenciadasapsoltimoobjetoacessvel.Observequememriacompactadasomenteseumacoleta
descobreumnmerosignificativodeobjetosinacessveis.Setodososobjetosnaheapgerenciada
sobrevivemaumacoleta,nohnecessidadedecompactaodememria.
Paramelhorarodesempenho,otempodeexecuoalocamemriaparaobjetosgrandesemumheap
separado.Ocoletordelixoautomaticamenteliberaamemriaparaobjetosgrandes.Noentanto,para
evitarmoverobjetosgrandesnamemria,essamemrianocompactada.
GeraeseDesempenho
Paraotimizarodesempenhodocoletordelixo,oGerenciadoheapdivididoemtrsgeraes:0,1e2.
AlgoritmodecoletadelixodoTempodeexecuosebaseiaemvriasgeneralizaesqueindstriade
http://online.unip.br/imprimir/imprimirconteudo

1/3

07/12/2014

online.unip.br/imprimir/imprimirconteudo

softwaredocomputadortemdescobertoaserVerdadeiroportestandocomesquemasdecoletadelixo.
Primeiro,maisrpidocompactaramemriaparaumapartedoheapgerenciadoqueparaoheap
gerenciadointeiro.Emsegundolugar,objetosmaisrecentesterovidasteismenoreseobjetosmais
antigosobjetosterovidasteismaiores.Finalmente,objetosmaisrecentestendemaserrelacionados
entresieacessadospeloaplicativoaproximadamenteaomesmotempo.
OcoletordelixodoRuntimearmazenanovosobjetosnagerao0.Objetoscriadoscomantecednciano
tempodevidadoaplicativoquesobrevivemacoletassopromovidosearmazenadosemgeraes1e2.
Oprocessodepromoodoobjetodescritoposteriormentenestetpico.Porquemaisrpido
compactarumapartedaheapgerenciadaqueaheapinteira,esteesquemapermitequeocoletordelixo
libereamemriaemumageraoespecficaemvezliberaramemriaparatodaamemriagerenciadaa
cadavezqueeleexecutaumacoleta.
Naverdade,ocoletordelixoexecutaumacoletaquandoagerao0estcheia.Seumaplicativotentar
criarumnovoobjetoquandoagerao0estcheia,ocoletordelixodescobrequenoexistenenhum
espaodeendereorestantenagerao0paraalocarparaoobjeto.Ocoletordelixoexecutaumacoleta
emumatentativadeliberarespaodeendereonagerao0paraoobjeto.Ocoletordelixoinicia
examinandoosobjetosnagerao0emvezdetodososobjetosnaheapgerenciada.Issoaabordagem
maiseficiente,porquenovosobjetoscostumamtertemposdevidacurtos,eesperadoquemuitosdos
objetosnagerao0noestejammaisemusomaispeloaplicativoquandoumacoletaexecutada.
Almdisso,umanicacoletadegerao0freqentementerecuperamemriasuficienteparapermitirao
aplicativocontinuarcriandonovosobjetos.
Apsocoletordelixoexecutarumacoletadegerao0,elecompactaamemriaparaosobjetos
acessveisconformeexplicadoanteriormentenestetpicoemLiberandomemria.Ocoletordelixoento
promoveessesobjetoseconsideraestapartedaheapgerenciadacomogerao1.Pelofatodeque
objetosquesobrevivemacoletascostumamtervidasteismaislongas,fazsentidopromovlospara
umageraosuperior.Comoresultado,ocoletordelixonotemquereexaminarosobjetosemgeraes
1e2semprequeeleexecutaumacoletadegerao0.
Apsocoletordelixoexecutarsuaprimeiracoletadegerao0epromoverosobjetosacessveisna
gerao1,eleconsideraorestodaheapgerenciadacomogerao0.Elecontinuaaalocarmemriapara
novosobjetosnagerao0atqueagerao0estejacheiaequesejanecessrioexecutaroutracoleta.
Nesseponto,omecanismodeotimizaodocoletordelixodeterminaseelenecessrioexaminaros
objetosemgeraesmaisantigas.Porexemplo,seumacoletadegerao0norecuperamemria
suficienteparaoaplicativoconcluirsuatentativadecriarumnovoobjetodeformabemsucedida,o
coletordelixopodeexecutarumacoletadegerao1,edepoisdegerao0.Seissonorecuperar
memriasuficiente,ocoletordelixopodeexecutarumacoletadegeraes2,1,e0.Apscadacoleta,o
coletordelixocompactaosobjetosacessveisnagerao0epromoveosparagerao1.Objetosna
gerao1quesobrevivemacoletassoelevadosparagerao2.Comoocoletordelixooferecesuporte
somenteatrsgeraes,objetosnagerao2quesobrevivemaumacoletapermanecemnagerao2
atqueelessejamdeterminadoscomoinalcanveisemumacoletafutura.
LiberandoMemriaparaRecursosnoGerenciados
Paraamaioriadosobjetosqueseuaplicativocria,vocpodeconfiarnocoletordelixoparaexecutar
automaticamenteastarefasdegerenciamentodememrianecessrias.Entretanto,recursosno
gerenciadosrequeremlimpezaexplcita.Otipomaiscomumderecursosnogerenciadosumobjetoque
envolveumrecursodosistemaoperacional,comoumidentificadordearquivo,identificadordejanelaou
conexoderede.Emboraocoletordelixosejacapazdecontrolarotempodevidadeumobjeto
gerenciadoqueencapsulaumrecursonogerenciado,elenotemconhecimentoespecficosobrecomo
limparorecurso.Quandovoccriaumobjetoqueencapsulaumrecursonogerenciado,recomendvel
quevocforneaocdigonecessrioparalimparorecursonogerenciadosemummtodopblico
Dispose.AofornecerummtodoDispose,vocpermitequeusuriosdoseuobjetoliberem,
explicitamente,suamemriaquandoelasestiveremconcludocomoobjeto.Quandovocusaumobjeto
queencapsulaumrecursonogerenciados,vocdeveestarcientedasDisposeechamlasconforme
necessrio.Paraobtermaisinformaessobrealimpezaderecursosnogerenciadoseumexemplode
umpadrodedesignparaimplementarDispose,consulte
Fonte:
http://msdn.microsoft.com/ptbr/library/f144e03t.aspx

http://online.unip.br/imprimir/imprimirconteudo

2/3

07/12/2014

online.unip.br/imprimir/imprimirconteudo

Exerccio1:
GerenciamentoautomticodememriaumdosserviosqueoCommonLanguageRuntimefornece
duranteaExecuoGerenciada.DestaformaquaissoasfunesexatasdoGarbageCollector?
AAlocaodeMemria
BLiberaodeMemria
CCompactaodamemria
DTodasasalternativasanteriorescomexcessoaletraC
ETodasasalternativasanteriores

Oalunorespondeueacertou.Alternativa(D)
Comentrios:
ARespostacorreta...
BRespostacorreta...
CRespostacorreta...
DRespostacorreta...
Exerccio2:
Quandovocinicializaumnovoprocesso,otempodeexecuoreservaumaregiocontnuadeespao
deendereoparaoprocesso.Esteespaodeendereoreservadochamadode?
AMemriaAlocada
BMemriaResrevada
CHeapGerenciada
DCrachdeMemria
ENenhumadasalternativasanteriores

Oalunorespondeueacertou.Alternativa(C)
Comentrios:
AMaiscoerente.
BMaiscoerente.
CMaiscoerente.

http://online.unip.br/imprimir/imprimirconteudo

3/3

Você também pode gostar