Publicado por Rafael Rosa em 25 de February de 2010
Como o Ruby gerencia memória e faz garbage collection
Garbage Collection and the Ruby Heap é uma apresentação feita por Joe Damato e Aman Gupta no último LA Ruby Conference. Por enquanto temos apenas os slides, 70 ao todo, mas eles são bastante detalhados e quase servem como um pequeno e-book sobre o sistema de garbage collection do Ruby.
Joe e Aman comparam o gerenciamento de memória em C com o do Ruby e mostram as diferenças entre o stack e o heap. Uma vez que utiliza garbage collection, o Ruby segue o caminho fácil, colocando tudo no heap e a apresentação mostra como o MRI (o Ruby 1.8 do Matz) faz isso, e também mostra como os objetos são gerenciados dentro em memória, incluindo os structs em C.

O sistema de garbage collection do MRI não é muito otimizado, embora o Ruby Enterprise Edition da Phusion tenha feito alguns ajustes, e a apresentação mostra a viabilidade de se utilizar outros sistemas de garbage collection. Como sempre, os problemas aparecem na compatibilidade com as extensões nativas.
Eles fecham a apresentação com um interessante tutorial de como utilizar o memprof (um profiler de memória para Ruby) para debugar um vazamento de memória no Rails 3.

Clique aqui para adicionar ao del.icio.us

25 de June de 2011 às 13:30
[...] Dessa forma, vimos que se instância-mos varias vezes a mesma String, para cada instância ela terá uma posição diferente na memória, com isso também terá um tamanho diferente, fazendo com que uma determinada hora a memória vai pro "saco" . O lado ruim, de não se poder usar de forma absurda os Símbolos, é que eles não são coletados pelo "Garbage Collector". [...]