Class: Knj::Memory_analyzer::Object_size_counter
- Defined in:
- lib/knj/memory_analyzer.rb
Overview
This class is used to calculate a guessed amount of memory the given object requires.
Instance Method Summary collapse
- #calculate_size ⇒ Object
-
#initialize(obj) ⇒ Object_size_counter
constructor
A new instance of Object_size_counter.
- #object_size(obj) ⇒ Object
- #var_size(var) ⇒ Object
Constructor Details
#initialize(obj) ⇒ Object_size_counter
Returns a new instance of Object_size_counter.
336 337 338 339 |
# File 'lib/knj/memory_analyzer.rb', line 336 def initialize(obj) @checked = {} @object = obj end |
Instance Method Details
#calculate_size ⇒ Object
341 342 343 344 345 346 |
# 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) ⇒ Object
348 349 350 351 352 353 354 355 356 357 358 359 |
# 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) ⇒ Object
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 |
# 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 |