[pt] FINALIZADORES E CICLOS EM TABELAS FRACAS

Detalhes bibliográficos
Ano de defesa: 2007
Autor(a) principal: ALEXANDRA BARRETO ASSAD DE BARROS
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: MAXWELL
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=10985&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=10985&idi=2
http://doi.org/10.17771/PUCRio.acad.10985
Resumo: [pt] Referências fracas e finalizadores constituem uma alternativa elegante para se obter controle sobre a interação entre a aplicação e o coletor de lixo. No entanto, em alguns contextos, finalizadores são desnecessários, pois é possível estender o mecanismo de referências fracas a fim de dar suporte a finalização. Neste trabalho, realizamos um estudo detalhado sobre os usos desses mecanismos e mostramos como é possível substituir finalizadores por referências fracas propondo uma implementação baseada em referências fraca para cada uso de finalizadores. Baseado nesse estudo, desenvolvemos um mecanismo de finalização via referências fracas para a linguagem Lua. Motivados por nossa proposta de uma maior exploração do mecanismo de referências, desenvolvemos um algoritmo para um importante problema relacionado a ciclos em tabelas fracas, uma estrutura criada a partir de referências fracas. A existência de referências cíclicas entre chaves e valores impede que os elementos que compõem o ciclo sejam coletados, mesmo que eles não sejam mais utilizados pelo programa. Isso acaba dificultando o uso de tabelas fracas em determinadas aplicações. A linguagem Haskell resolveu esse problema através de uma adaptação do mecanismo de ephemerons ao seu coletor de lixo. Partindo desse fato, modificamos a implementação do coletor de lixo de Lua para que este oferecesse suporte ao mecanismo de ephemerons. Dessa forma, pudemos eliminar o problema de ciclos em tabelas fracas nessa linguagem.