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.
295 296 297 298 |
# File 'lib/knj/memory_analyzer.rb', line 295 def initialize(obj) @checked = {} @object = obj end |
Instance Method Details
#calculate_size ⇒ Object
300 301 302 303 304 305 |
# File 'lib/knj/memory_analyzer.rb', line 300 def calculate_size ret = self.var_size(@object) @checked = nil @object = nil return ret end |
#object_size(obj) ⇒ Object
307 308 309 310 311 312 313 314 315 316 317 318 |
# File 'lib/knj/memory_analyzer.rb', line 307 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
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 |
# File 'lib/knj/memory_analyzer.rb', line 320 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 |