class BusyAdministrator::MemorySize
Public Class Methods
kibibytes(num)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 91 def kibibytes(num) new(bytes: num * 1024) end
kilobytes(num)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 95 def kilobytes(num) new(bytes: num * 1000) end
mebibytes(num)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 99 def mebibytes(num) new(bytes: num * 1024 * 1024) end
megabytes(num)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 103 def megabytes(num) new(bytes: num * 1000 * 1000) end
new(bytes:)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 16 def initialize(bytes:) @bytes = bytes end
of(target, checked_objects: [])
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 107 def of(target, checked_objects: []) total_size = 0 unless checked_objects.include?(target.object_id) total_size += ObjectSpace.memsize_of(target) checked_objects << target.object_id (ObjectSpace.reachable_objects_from(target) || []).each do |reachable_object| return new(bytes: 0) if reachable_object.is_a?(ObjectSpace::InternalObjectWrapper) total_size += self.of(reachable_object, checked_objects: checked_objects).bytes end end new(bytes: total_size) end
of_all_objects_from(target)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 125 def of_all_objects_from(target) total_memory_size = 0 # ensure that we don't double count duplicates checked_objects = [] if target.is_a?(Class) || target.is_a?(Module) ObjectSpace.each_object(target).each do |instance| total_memory_size += self.of(instance, checked_objects: checked_objects).bytes end else raise Exception, "target should be a Class or Module" end new(bytes: total_memory_size) end
Public Instance Methods
*(number)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 48 def *(number) self.class.new(bytes: @bytes * number) end
+(other)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 40 def +(other) self.class.new(bytes: @bytes + other.bytes) end
-(other)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 44 def -(other) self.class.new(bytes: @bytes - other.bytes) end
/(number)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 52 def /(number) self.class.new(bytes: @bytes / number) end
<(other_object)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 68 def <(other_object) self.bytes < other_object.bytes end
<=(other_object)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 72 def <=(other_object) self.bytes <= other_object.bytes end
==(other_object)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 56 def ==(other_object) self.bytes == other_object.bytes end
>(other_object)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 60 def >(other_object) self.bytes > other_object.bytes end
>=(other_object)
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 64 def >=(other_object) self.bytes >= other_object.bytes end
bytes()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 20 def bytes @bytes end
inspect()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 86 def inspect to_s end
kibibytes()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 24 def kibibytes @bytes / 1024 end
kilobytes()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 28 def kilobytes @bytes / 1000 end
mebibytes()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 32 def mebibytes @bytes / 1024 / 1024 end
megabytes()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 36 def megabytes @bytes / 1000 / 1000 end
to_s()
click to toggle source
# File lib/busy-administrator/memory_size.rb, line 76 def to_s if @bytes < 1024 "#{ bytes } Bytes" elsif @bytes < 1024 * 1024 "#{ kibibytes } KiB" else "#{ mebibytes } MiB" end end