Publicado por Rafael Rosa em 25 de February de 2010

Como o Ruby gerencia memória e faz garbage collection

garbage.jpgGarbage 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.

cvsruby

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.

Apenas Um Comentário para “Como o Ruby gerencia memória e faz garbage collection”

  1. #1
    Symbols x String on #Ruby – Rodrigo Martins Disse:

    [...] 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". [...]

Deixe um Comentário