Maxwell Para Simples Indexação

Título
[pt] FINALIZADORES E CICLOS EM TABELAS FRACAS

Título
[en] FINALIZERS AND CYCLES IN WEAK TABLES

Autor
[pt] ALEXANDRA BARRETO ASSAD DE BARROS

Vocabulário
[pt] FINALIZADORES

Vocabulário
[pt] COLETA DE LIXO

Vocabulário
[pt] REFERENCIAS FRACAS

Vocabulário
[en] FINALIZERS

Vocabulário
[en] GARBAGE COLLECTION

Vocabulário
[en] WEAK REFERENCES

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.

Resumo
[en] Weak References and finalizers constitute an elegant alternative to obtain control over the interaction between the application and the garbage collector. However, in some contexts, finalizers are not necessary because it`s possible to extend the weak reference mechanism in order to give support to finalization. In this work, we present a survey of the most common uses of these mechanisms. We also show how weak references can replace finalizers proposing a weak reference based implementation for each finalizer use. Based on this survey, we developed a finalization mechanism based on weak references for the Lua programming language. Motivated by our proposal of a better exploration of the weak reference mechanism, we developed a solution for an important problem related to cycles on weak tables, an structure created using weak references. Cyclic references between keys and values prevents the elements inside the cycle from being collected, even if they are no more reachable. This ends up bringing difficulties to the use of weak tables in certain kinds of applications. The Haskell programming language solved this problem implementing an adaptation of a mechanism called ephemerons. Based on this fact, we modified the Lua garbage collector in order to offer support to ephemerons. As a result, we were able to solve the problem of cycles on weak tables in Lua.

Orientador(es)
ROBERTO IERUSALIMSCHY

Banca
LUIZ HENRIQUE DE FIGUEIREDO

Banca
ROBERTO IERUSALIMSCHY

Banca
NOEMI DE LA ROCQUE RODRIGUEZ

Banca
RENATO FONTOURA DE GUSMAO CERQUEIRA

Catalogação
2007-12-06

Apresentação
2007-04-13

Tipo
[pt] TEXTO

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Idioma(s)
PORTUGUÊS

Referência [pt]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=10985@1

Referência [en]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=10985@2

Referência DOI
https://doi.org/10.17771/PUCRio.acad.10985


Arquivos do conteúdo
CAPA, AGRADECIMENTOS, RESUMO, ABSTRACT, SUMÁRIO E LISTAS PDF
CAPÍTULO 1 PDF
CAPÍTULO 2 PDF
CAPÍTULO 3 PDF
CAPÍTULO 4 PDF
CAPÍTULO 5 PDF
CAPÍTULO 6 PDF
REFERÊNCIAS BIBLIOGRÁFICAS E APÊNDICES PDF