Module: Memory

Defined in:
lib/madvertise/ext/object_space.rb

Constant Summary collapse

WORD_SIZE =
8
OBJ_SIZE =

some are smaller

40
OBJ_OVERHEAD =
WORD_SIZE + OBJ_SIZE

Class Method Summary collapse

Class Method Details

.size(obj) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/madvertise/ext/object_space.rb', line 6

def self.size(obj)
  return WORD_SIZE if obj.is_a?(Fixnum)

  case obj
  when String
    obj.size
  when Array
    obj.size * WORD_SIZE
  when Hash
    obj.size * WORD_SIZE * 2
  #when Enumerable
  #  result = 0
  #  obj.each do |ref|
  #    result += WORD_SIZE
  #  end
  #  result
  else
    0
  end + OBJ_OVERHEAD
rescue => e
  puts "failed to get object size for #{obj.inspect}: #{e}"
  return OBJ_OVERHEAD
end