class Knj::Memory_analyzer::Object_size_counter
This class is used to calculate a guessed amount of memory the given object requires.
Public Class Methods
new(obj)
click to toggle source
# File lib/knj/memory_analyzer.rb, line 336 def initialize(obj) @checked = {} @object = obj end
Public Instance Methods
calculate_size()
click to toggle source
# File lib/knj/memory_analyzer.rb, line 341 def calculate_size ret = self.var_size(@object) @checked = nil @object = nil return ret end
object_size(obj)
click to toggle source
# File lib/knj/memory_analyzer.rb, line 348 def object_size(obj) size = 0 obj.instance_variables.each do |var_name| var = obj.instance_variable_get(var_name) next if @checked.key?(var.__id__) @checked[var.__id__] = true size += self.var_size(var) end return size end
var_size(var)
click to toggle source
# File lib/knj/memory_analyzer.rb, line 361 def var_size(var) size = 0 if var.is_a?(String) size += var.length elsif var.is_a?(Integer) size += var.to_s.length elsif var.is_a?(Symbol) or var.is_a?(Fixnum) size += 4 elsif var.is_a?(Time) size += var.to_f.to_s.length elsif var.is_a?(Hash) var.each do |key, val| size += self.var_size(key) size += self.var_size(val) end elsif var.is_a?(Array) var.each do |val| size += self.object_size(val) end elsif var.is_a?(TrueClass) or var.is_a?(FalseClass) size += 1 else size += self.object_size(var) end return size end