Ruby · Avançado · Inglês · Técnico
ObjectSpace
Módulo que permite inspecionar os objetos vivos do CRuby: each_object percorre instâncias de uma classe e count_objects mostra contagens por tipo. Serve para depuração, não para lógica de produção.
Onde usar
Aparece ao caçar vazamentos de memória, contando quantas instâncias de uma classe continuam vivas, ou ao listar subclasses em ferramentas de desenvolvimento.
Em código
class Cliente; end
vivos = Array.new(3) { Cliente.new }
n = ObjectSpace.each_object(Cliente).count
p n # => 3
p ObjectSpace.count_objects.key?(:TOTAL)
# => trueExemplos
Count the live instances with ObjectSpace.each_object.
Conte as instâncias vivas com ObjectSpace.each_object.
ObjectSpace is for debugging, not for business logic.
O ObjectSpace é para depuração, não para regra de negócio.
Cuidado
É lento e depende do GC: objetos já coletados não aparecem e o resultado muda entre execuções. Não use em lógica de aplicação.