Esta seção analisa a orretude do algoritmo para um oletor e vários mutadores, apre-
sentadona Seção5.3e implementadona máquinavirtual Java JikesRVM, omo des ritona
Seção5.6.
O algoritmo para vários mutadores da Seção 5.3 é baseado no algoritmo om la de
atualizaçõesdaSeção4.3.2, uja orretudeéanalisada naSeção6.5. A questãodasegurança
é similar ao aso do algoritmo om apenas um mutador. A diferença é que o oletor reúne
todas as informações nas las de atualização de ada mutador no iní io do i lo de oleta,
e pre isa integrar essas informações para atualizar os ontadores de referên ias de todos os
objetosqueapare em naslasde atualização.
Umaquestãoimportantenaintegraçãoentreos onteúdosdaslasdeatualizaçãoégaran-
tir que apenas um registro de atualização esteja presente para ada objeto ujas referên ias
paraeleforamatualizadas no i lode oleta atual. Assim,o ontador dereferên iasde ada
objetoé atualizado apenas uma vez em ada i lo. Isso é garantido na rotina Update (Al-
goritmo 5.1) através do uso do ag updated. Em Update, o ag updated de ada objeto é
veri adoantesdainserçãodeumregistronaladeatualizações; seoobjetojáfoiatualizado
no i lo atual,um registro não é inserido. Isso garanteque sóhá umregistro paraumdado
objetoem ada i lo.
Segurança No oletor, o pro edimento UpdateReferen eCounters (Algoritmo 4.10)
aumobjetofoiremovido, UpdateReferen eCounter s hama Re Del(Algoritmo 4.5),
querealizaaremoção re ursivade referên ias. Assim omo noalgoritmo paraummutadore
um oletor,Re Delgarante queapenasobjetosquenãoestãomaisvivosserão efetivamente
removidospara oespaço livre. Issogarantea propriedadeda segurança.
Viva idade Como men ionado, UpdateReferen eCounters hamaRe Del para on-
tabilizar a remoção de referên ias a um objeto. Por sua vez, Re Del dete ta quando a
remoção da referên ia ao objetotivero poten ial de isolarum i loveri ando seo onta-
dordereferên iatemvalormaiorqueum;nesse aso,oobjetoéadi ionadoaostatusanalyser,
que faráa veri ação de i los assim omo nas versões anteriores do algoritmo. O pro esso
todode varredura de i los lo ais não é diferente dos algoritmos previamenteexaminados, e
Con lusões e
Considerações Finais
E
stetrabalhoapresentouumestudorealizadosobrealgoritmosde ontagemdereferên ias
í li asadequadosparausoemsistemasmultipro essados,detalhando osalgoritmosem
si, implementações dos mesmos foram realizadas em plataformas de testes, e resultados de
testesde desempenho realizados.
Doisnovosalgoritmos foram propostos: umalgoritmo para umaarquitetura baseada em
um mutador e um oletor, baseado no on eito de la de atualizações (Seção 4.3.2), e um
algoritmoadequadoparaarquiteturas omvários mutadores e um oletor, usandotambém o
on eito de la de atualizações (Capítulo 5). Esses novos algoritmos foram implementados
e testados em onjuntos de programas de ben hmarking para análises de desempenho. Os
resultadosmostrados sãopromissores: ambososalgoritmostêm desempenho ompetitivo em
relaçãoàs alternativas disponíveis e, no aso do algoritmo para vários mutadores, apresenta
temposde pausamuito menoresdoque asalternativas.
OsnovosalgoritmosapresentadosnosCapítulos4e5respondempositivamenteàsQuestões
de Pesquisa 1 e 2 apresentadas naSeção 1.3.1. Em espe ial, om relaçãoà Questão 2,o uso
da lade atualizações não sóreduz a ne essidade de sin ronização entre oletor e mutador,
omo tambémreduz o número de atualizações ne essárias nos ontadores de referên ias dos
objetos,resultandoemuma melhora onsiderávelno desempenho do algoritmo.
iados omo o Common Language Runtime (CLR) da plataforma .NET da Mi rosoft. Em
relaçãoa algoritmos de oleta de lixo usados nessas plataformas, o algoritmo do Capítulo 5
tem desempenho menos de 10% pior em todos os testes realizados, mas tem a grande van-
tagem de impor tempos de pausa menores ao programa exe utado; de fato, os tempos de
pausano algoritmode ontagemde referên ias í li assãoordensde magnitudemenoresque
osdosalgoritmos on orrentes. Issoéumaevidên ia da respostapositivadada àQuestãode
Pesquisa 1 da Seção1.3.1. Ostestes realizados omosprogramas do onjunto DaCapo, que
são baseados em apli ações reais es ritas em Java, respondem à Questão de Pesquisa 3 de
maneirasatisfatória.
Também foi feito um onjunto de testes preliminares para determinar o omportamento
doalgoritmo propostopara vários mutadores omrelação ao res imento donúmero de pro-
essadores disponíveis, omo pode ser visto na Seção 5.7.5. Os testes realizados om um
omputador om pro essador de 4 nú leos mostram que o algoritmo proposto para vários
mutadores ontinuatendobomdesempenhotantoemthroughput omoemrelaçãoàlatên ia.
Issoresponde par ialmenteà QuestãodePesquisa4,masmaisinvestigação éne essáriapara
observar tendên iasqueapareçamquandoonúmerodepro essadores res eaindamais. Essa
ideia eoutras rela ionadaspodemser exploradas em trabalhosfuturos, omoserá detalhado
adiante.
Esta ara terísti adoalgoritmopropostonoCapítulo 5podeserusada omvantagemem
situaçõesemquea latên iae o tempo derespostado programa sãotão oumais importantes
queodesempenho, por exemplo:
⊲
Sistemasdetemporeal,nosquaisoprogramadeveresponderàssoli itaçõesdentrode prazos xos. Algoritmos de oleta de lixoque impõempausas maiores podemtornarimprevisível o tempo de resposta do sistema, pois um i lo de oleta pode omeçar
enquanto existe umaou maissoli itaçõespendentes.
⊲
Sistemas de interfa e om o usuário nal. Usuários tendem a preferir sistemas que respondamaosseus omandos, mesmoqueo tempo total pararealizar ada omandosejaumpou o maior.
⊲
Servidores ou Serviços Web que devem responder às soli itações dentro de prazos estipuladospor algum ontrato deserviço.7.1 Sugestões para Trabalhos Futuros
O trabalho de investigação relatado aqui sus ita umagrande possibilidade de outros es-
tudosrela ionadosquepodemserrealizados. Alguns exemplossãosugeridosa seguir:
⊲
Aslas usadaspelos algoritmosbaseados emlasdeatualização têmumimpa toim- portante nodesempenho resultante. Existeumferramental teóri obaseado emteoriadas las que poderia ser usado para analisar matemati amente algumas ara terísti-
as do desempenho dessas las, e as informações dessa análise poderiam ser usadas
paradeterminar a relaçãoentrealguns parâmetros asso iados (porexemplo,tamanho
máximoda la) eo desempenho naldoalgoritmo.
⊲
O maior ponto de ontenção no algoritmo para vários mutadores do Capítulo 5 é o a esso à lista de espaço livre na memória: todos os threads a essam a mesma lista.Uma possível alteração que poderia reduzir a ontenção e melhorar o desempenho
do algoritmo seria ter listas de espaço livre separadas para ada thread ou grupo de
threads. Seria ne essário estudar qual a melhor solução para asos omo um thread
usandotodooespaçodememórianasualistalivre,enquantoaslistasdeoutrosthreads
possuem espaço disponível. Seria ne essário testar se a alteração ompensa a maior
omplexidade om umamelhoria signi ativa nodesempenho do algoritmo.
⊲
O algoritmo para vários mutadores (Capítulo 5) suspende ada mutador por algum tempo enquanto opia sua la de atualizações. Uma possibilidade para reduzir aspausas ainda maisseria usar uma estrutura diferente paraa lade atualização. Um
exemploéusarduaslaspara adathread,las
F1
eF2
. Apenasumadaslasestaria ativa em ada momento. Ini ialmente, pode-se usar a laF1
omo ativa. Durante o iní io do i lo de oleta, em que o oletor pre isa obter o onteúdo das las deatualização de ada mutador, a la ativa para o mutador passa a ser
F2
, enquanto o onteúdo deF1
é utilizado pelo oletor; registros de atualização seriam in luídos apenas na la ativa. Essasalterações, se não riarem problemas de sin ronização ouinterferên iaentre oletore mutadores,talvez reduzam oumesmoeliminem aspausas
impostas pelo oletor.
⊲
Os algoritmos testados neste trabalho usam apenas um pro esso ou thread oletor, o que é adequado para um omputador om pou os pro essadores. Entretanto, àvantajoso ter vários oletores fun ionando em paralelo. Algumas possibilidades para
arquiteturas om mais de um oletor foram sugeridas no Capítulo 5, mas nenhum
algoritmoseguindoessaspossibilidadesfoiimplementado. Umasugestãodetrabalhoé
desenvolvereimplementarumalgoritmo omvários oletoresemalgumaplataformade
hardware omummaiornúmerodepro essadores,ouatravésdesimulação,e veri ar
odesempenho dassoluçõespropostas.
⊲
Os algoritmos propostos nos Capítulos 4 e 5 podem ser adaptados para uso om sis- temasdistribuídos de memória ompartilhada. Como não há a ne essidade de varrertodo o espaço de memória ompartilhada, omo o orre nosalgoritmos de oleta por
ópiaou oletapor mar açãoevarredura, osalgoritmosqueusam ontagem derefer-
ên ia tendem a ter melhor desempenho em arquiteturas distribuídas. Embora a sin-
ronizaçãoenvolvida sejamais omplexa,os algoritmosfun ionam om relativamente
pou as operações de sin ronização explí ita. No algoritmo paravários mutadores do
Capítulo 5,as lasde atualização já sãoobtidas pelo oletorde uma forma similar a
[1℄ B. Alpern and et al., The jalapeño virtual ma hine, IBM Systems Journal, vol. 39,
no.1, pp.211215,Março 2000.
[2℄ G. M. Amdahl, Validity of thesingle pro essor approa h to a hieving large s ale om-
puting apabilities, in Pro . AFIPS Spring Joint Computer Conferen e, Atlanti City,
NJ, USA,Abril1967, pp.483485.
[3℄ G. R. Andrews, Con urrent Programming: Prin iples and Pra ti e. Addison-Wesley
Professional, Julho 1991.
[4℄ , Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-
WesleyProfessional, Julho 1999.
[5℄ K. Arnold, J. Gosling, and D. Holmes,The Java Programming Language (4th Edition).
Addison-WesleyProfessional, Agosto 2005.
[6℄ ArsTe hni a, Multi ore, dual- ore, and the future of intel, 2004. [Online℄. Available:
http://arste hni a. om/arti les/paedia / pu/ int el-futur e.ars/1
[7℄ Azat hi, Hezi, Levanoni, Yossi, Paz, Harel, and Petrank, Erez, An on-the-y mark
and sweep garbage olle tor based on sliding views, in OOPSLA '03: Pro eedings of
the 18th annual ACM SIGPLAN onferen e on Obje t-oriented programing, systems,
languages, and appli ations. New York, NY, USA: ACM, 2003, pp.269281. [Online℄.
Available: http://dx.doi.org/10.1145/949305.94932 9
[8℄ J.W.Ba kus,R.J.Beeber,S.Best,R.Goldberg,L.M. Haibt,H.L.Herri k,R.A.Nel-
son,D.Sayre,P.B.Sheridan,H.Stern,I.Ziller,R.A.Hughes,andR.Nutt,Thefortran
automati odingsystem, inPaperspresentedattheFebruary26-28,1957,westernjoint
omputer onferen e: Te hniquesforreliability,ser.IRE-AIEE-ACM'57(Western). New
[9℄ D. F. Ba on, C. R. Attanasio, H. B. Lee, V. T. Rajan, and S. Smith, Java without
the oee breaks: a nonintrusive multipro essor garbage olle tor, in PLDI '01: Pro-
eedings of the ACM SIGPLAN 2001 onferen e on Programming language design and
implementation. NewYork,NY, USA:ACM,2001, pp.92103.
[10℄ N. Benton, Abstra ting allo ation: The new new thing, in Computer S ien e Logi
(CSL 2006),ser. Le ture Notes inComputer S ien e. Springer-Verlag,2006.
[11℄ S. M. Bla kburn, R. Garner, C. Homan, A. M. Khan, K. S. M Kinley, R. Bentzur,
A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump,
H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi¢, T. VanDrunen, D.von Din klage,
and B. Wiedermann, The DaCapo ben hmarks: Java ben hmarking development and
analysis, in OOPSLA '06: Pro eedings of the 21st annual ACM SIGPLAN onferen e
on Obje t-Oriented Programing, Systems,Languages, andAppli ations. NewYork,NY,
USA: ACMPress, O t.2006, pp.169190.
[12℄ S. M. Bla kburn, K. S. M Kinley, R. Garner, C. Homann, A. M. Khan, R. Bentzur,
A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump,
H. Lee, J. E. B. Moss,A. Phansalkar, D. Stefanovik, T. VanDrunen, D. von Din klage,
andB.Wiedermann,Wakeupandsmellthe oee: evaluationmethodologyforthe21st
entury, Commun. ACM,vol. 51,pp.8389,August 2008.
[13℄ S.Bla kburn, R.Garner, andD.Frampton, Mmtk: Thememory management toolkit,
JikesRVM, Te h. Rep., 2006. [Online℄. Available: http:// s.anu.edu.au/~Robin.Garner/
mmtk-guide.pdf
[14℄ S. Blazy and X. Leroy, Formal veri ation of a memory model for C-like imperative
languages, inInternationalConferen e on FormalEngineeringMethods(ICFEM2005),
ser. Le ture NotesinComputer S ien e,vol.3785. Springer-Verlag, 2005,pp.280299.
[15℄ H. Boehm, Destru tors, nalizers, and syn hronization, in POPL '03: Pro eedings of
the 30th ACM SIGPLAN-SIGACT symposium on Prin iples of programminglanguages,
vol. 38,no.1. New York,NY,USA:ACMPress, Janeiro 2003,pp. 262272.
[16℄ , The spa e ost of lazy referen e ounting, inPOPL '04: Pro eedings of the 31st
[17℄ H. Boehmand A.Demers, Garbage olle tioninan un ooperative environment, Soft-
ware Pra ti e & Experien e, vol. 9,no.18,pp.195244, 1988.
[18℄ E. Chailloux, P. Manoury,and B. Pagano, Développement d'appli ations ave Obje tive
Caml. O'Reilly,2000.
[19℄ C. J.Cheney,A nonre ursive list ompa ting algorithm, Commun. ACM, vol. 13, pp.
677678, November1970.
[20℄ J. Chirimar, C. A. Gunter, and J. G. Rie ke, Referen e ounting as a omputational
interpretation of linear logi , Journal of Fun tional Programming, vol. 6, no. 2, pp.
195244, 1996. [Online℄. Available: http:// iteseer.ist.psu.edu/ hirimar96refere n e.htm l
[21℄ W. F. Clo ksinand C. S.Mellish,Programming in Prolog, 5th edition. Springer, 2003.
[22℄ G. E. Collins, A method for overlapping and erasure of lists, Communi ations of the
ACM,vol. 3,no.12,pp.655657, Dezembro 1960.
[23℄ D. Coward, Java vm: Trying a new garbage olle tor for jvm 7, 2008. [Online℄.
Available: http://blogs.sun. om/theplanetarium/entry/java_vm_ trying_ a_ne w
[24℄ M. J. Crawley,The R Book. Wiley, 2007.
[25℄ D. L.Detlefs, C. Flood, S. Heller, and T. Printezis, Garbage-rst garbage olle tion,
pp.3748, 2004. [Online℄.Available: http://dx.doi.org/10.1145/1029873. 10298 79
[26℄ D. L.Detlefs, P. A. Martin, M. Moir, and G. L. Steele, Lo k-free referen e ounting,
Distributed Computing,vol. 15,no.4,pp.255271, Dezembro 2002.
[27℄ J.DeTreville,Experien ewith on urrentgarbage olle torsforModula-2+, DECSRC,
Te h. Rep.64,Agosto 1990.
[28℄ P.L.Deuts handD.G.Bobrow,Ane ient,in remental,automati garbage olle tor,
Commun. ACM,vol. 19,no.9,pp.522526, Setembro 1976.
[29℄ E. W. Dijkstra, L. Lamport, A. J. Martin, C. S.S holten, and E. F. M. Steens, On-
the-y garbage olle tion: an exer isein ooperation, Commun. ACM,vol. 21, no. 11,
[30℄ D.DoligezandG.Gonthier,Portable,unobtrusivegarbage olle tionformultipro essor
systems, inPro eedings of the21st ACM SIGPLAN-SIGACTSymposium on Prin iples
of Programming Languages,1994.
[31℄ D. Doligez and X. Leroy, A on urrent, generational garbage olle tor for a multi-
threaded implementation of ML, in Pro eedings of the 20th ACM SIGPLAN-SIGACT
Symposium on Prin iples of Programming Languages, 1993.
[32℄ R.K. Dybvig, The S heme Programming Language, 3rd. edition. MITPress,2003.
[33℄ R.R.Feni helandJ.C.Yo helson,Alispgarbage- olle torforvirtual-memory omputer
systems, Commun. ACM,vol. 12,pp.611612, November 1969.
[34℄ A. J.Fieldand P.Harrison,Fun tionalProgramming. Addison-Wesley, Julho1988.
[35℄ J.A.S.Filho,Algoritmospara ontagemdereferên ias í li as,Master'sthesis,Centro
de Informáti a,Universidade Federal dePernambu o, Fevereiro2002.
[36℄ D. Flanagan,JavaS ript: The Denitive Guide, 5th edition. O'Reilly,2006.
[37℄ C. Flood, D. Detlefs, N. Shavit, and C. Zhang, Parallel garbage olle tion for shared
memorymultipro essors, inUsenixJavaVirtualMa hineResear handTe hnologySym-
posium(JVM '01),Monterey,CA, 2001.
[38℄ W. Fokkink, Introdu tion to Pro ess Algebra. Springer, Fevereiro2000.
[39℄ A. Formigaand R.D. Lins,A NewAr hite ture for Con urrent Lazy Cy li Referen e
Counting onMulti-Pro essor Systems, Journal of Universal Computer S ien e, vol. 13,
no.6, 2007.
[40℄ ,E ientremovalofnoisybordersofmono hromati do uments,inImageAnalysis
and Re ognition, ser. Le ture Notes in Computer S ien e, M. Kamel and A.Campilho,
Eds. Springer Berlin/ Heidelberg, 2009,vol. 5627, pp.158167.
[41℄ E.FuentesandE.Eilebre ht,ThreadManagementintheCLR,MSDNMagazine,no.6,
2008. [Online℄. Available: http://msdn.mi rosoft. om/en-us/magazine /dd25 2943. aspx
[42℄ J.Y.Girard,Linearlogi : Itssyntaxandsemanti s, inAdvan esinLinearLogi (Pro .
[43℄ B. Goetz, Java theory and pra ti e: Garbage olle tion in the hotspot jvm, IBM
developerWorks, 2003. [Online℄. Available: http://www.ibm. om/developerworks/java/
library/j-jtp11253/index.html
[44℄ W. Gruener, Intel aims for 32 ores by 2010, TG Daily, 2006. [Online℄. Available:
http://www.tgdaily. om/2006/07/10 /intel_3 2_ or e_pro essor/
[45℄ S.P.Harbison, Modula-3. Prenti e-Hall, 1992.
[46℄ A. Hejlsberg, M. Torgensen, S. Wiltamuth, and P. Golde, The C# Programming Lan-
guage, 4thedition. Addison-Wesley Professional, 2010.
[47℄ A. Hejlsberg, S. Wiltamuth, and P.Golde, C# Programming Language, The (2nd Edi-
tion) (Mi rosoft .NetDevelopment Series). Addison-Wesley Professional, Junho 2006.
[48℄ M. P. Herlihy and J. E. B. Moss, Lo k-free garbage olle tion for multipro essors,
Parallel and Distributed Systems, IEEE Transa tions on, vol. 3, no. 3, pp. 304311,
1992. [Online℄. Available: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1 39204
[49℄ M.P.HerlihyandN.Shavit,TheArtofMultipro essorProgramming. MorganKaufmann
Publishers, Dezembro 2008.
[50℄ J. E. Hop roft, R.Motwani, and J. D.Ullman, Introdu tion to Automata Theory, Lan-
guages, and Computation(2nd Edition). AddisonWesley,Novembro 2000.
[51℄ R.Jain,TheArtofComputerSystemsPerforman eAnalysis. JohnWiley&Sons,1991.
[52℄ K. Jensen, N. Wirth, A. B. Mi kel, and J. F. Miner, Pas al User Manual and Report:
ISO Pas al Standard. Springer, Setembro 1991.
[53℄ R.Jonesand R.Lins,Garbage Colle tion : Algorithms for Automati Dynami Memory
Management. John Wiley&Sons,Setembro 1996.
[54℄ S.P.Jones andJ. H.(editors),Te h. Rep.
[55℄ B. W. Kernighan and D. M. Rit hie, C A Linguagem de Programação, Padrão ANSI.
Campus, 1989.
[57℄ S. G. Ko han, Programming in Obje tive-C 2.0, 2nd edition. Addison-Wesley Profes-
sional, 2009.
[58℄ L.Lamport,Spe ifying Systems: The TLA+ LanguageandToolsfor Hardware andSoft-
ware Engineers. Addison-Wesley Professional, Julho2002.
[59℄ , Spe ifying Systems: The TLA+ Language and Tools for Hardware and Software
Engineers. Addison-Wesley, 2003.
[60℄ D. Leijen and E. Meijer, Parse : Dire t style monadi parser ombinators for thereal
world, 2001. [Online℄. Available: iteseer.ist.psu.edu/arti le/leijen01parse .html
[61℄ Y. Levanoni and E. Petrank, An on-the-y referen e- ounting garbage olle tor for
java, ACMTrans.Program.Lang.Syst.,vol. 28,no.1,pp.169,Janeiro 2006.[Online℄.
Available: http://dx.doi.org/10.1145/1111596.1111 597
[62℄ I. Limited, O am Programming Manual. Prenti e Hall,1984.
[63℄ T. Lindholm and F. Yellin, The Java Virtual Ma hine Spe i ation, 2nd. edition.
Prenti e-Hall, 1999.
[64℄ R. D. Lins, Lazy y li referen e ounting, Journal of Universal Computer S ien e,
vol. 9,no.8,pp.813828, Agosto 2003.
[65℄ R. Lins, B. Ávila, and A. Formiga, Bigbat h an environment for pro essing
mono hromati do uments, in Image Analysis and Re ognition, ser. Le ture Notes in
ComputerS ien e,A.CampilhoandM.Kamel,Eds. SpringerBerlin/Heidelberg,2006,
vol. 4142, pp.886896.[Online℄. Available: http://dx.doi.org/10.1007/1186766 1_80
[66℄ R.D.Lins,Asharedmemoryar hite ture forparallel y li referen e ounting, Mi ro-
pro essing andMi roprogramming,vol. 34,pp.3135, Setembro 1991.
[67℄ , Cy li referen e ountingwith lazymark-s an, Inf.Pro ess. Lett., vol. 44,no.4,
pp.215220, Dezembro 1992.
[68℄ , Amulti-pro essor sharedmemory ar hite ture for parallel y li referen e ount-
ing, Mi ropro essing andMi roprogramming, vol. 35,pp.563568, 1992.
[70℄ , A new multi-pro essor ar hite ture for parallel lazy y li referen e ounting,
in SBAC-PAD '05: Pro eedings of the 17th International Symposium on Computer Ar-
hite ture on High Performan e Computing. Washington, DC, USA: IEEE Computer
So iety,2005,pp. 3543.
[71℄ ,Cy li referen e ounting, Inf.Pro ess.Lett.,vol.109,no.8,pp.7178,Dezembro
2008.
[72℄ A.D.Martínez, R.Wa hen hauzer, andR.D.Lins,Cy li referen e ountingwithlo al
mark-s an, Inf.Pro ess. Lett.,vol. 34,no.1, pp.3135, Fevereiro1990.