Method: Object#memory_size

Defined in:
lib/coaster/core_ext/memory_size.rb

#memory_size(depth: 2, object_ids: []) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/coaster/core_ext/memory_size.rb', line 4

def memory_size(depth: 2, object_ids: [])
  res = {nil => ObjectSpace.memsize_of(self)}
  instance_variables.each do |var|
    iv = instance_variable_get(var)
    if object_ids.include?(iv.object_id)
      res[var] = nil
    else
      object_ids << iv.object_id
      if depth > 0
        res[var] = iv.memory_size(depth: depth - 1, object_ids:)
      else
        res[var] = iv.memory_size_total(object_ids:)
      end
    end
  end
  res
end