FINALIZERS AND CYCLES IN WEAK TABLES / FINALIZADORES E CICLOS EM TABELAS FRACAS
AUTOR(ES)
ALEXANDRA BARRETO ASSAD DE BARROS
DATA DE PUBLICAÇÃO
2007
RESUMO
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.
ASSUNTO(S)
weak references finalizers coleta de lixo referencias fracas garbage collection finalizadores
ACESSO AO ARTIGO
Documentos Relacionados
- FINALIZADORES E REFERÊNCIAS FRACAS: INTERAGINDO COM O COLETOR DE LIXO
- Soluções ultra fracas, fracas, brandas e fortes para equações do tipo Navier-Stokes
- Comércio e ciclos na União Monetária Européia
- Soluções fracas das equações de Euler incompressívis
- A development environment based on adaptive decision tables.