mem_kit 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7a63448a9152611329b610fde6557caea9c69c3a
4
- data.tar.gz: b6ece5c440e8c06aebf9ce51bde9107b64404147
3
+ metadata.gz: 01507f215e7ca655fbc2784f9f697bf94757c190
4
+ data.tar.gz: ed61c68a6f6e9b3d0c3ddfd6af7a001c43f97f5a
5
5
  SHA512:
6
- metadata.gz: 197eea62f2eb8172a8eff128fa6db5e4861747ec10c070ff59e8f9c924f3df44b7e08da5cfa4108c31ed5a0586eedbe363ed5b7810161948d1d7ed47517123d3
7
- data.tar.gz: db4fae127aed4e32d539c8d5037c6bd075d54204e75d1f79f0ad507bf98a1f22fdbf380f1e45c143f45d7cc44bdad2594b4cc4ac454301c02c2856bd665ccbf0
6
+ metadata.gz: 27e635b2795e9a03cde13fd0601c33d583156601721df1d546bc87d7bdd936d6b045f7c05772eb363330e2fafbc3fc6d1adb3344d4238e01c2c9e4ccf75009d4
7
+ data.tar.gz: 671c4ab00539912dd62ead068246a3ba3f4a10c8469c064b7daf4e31c2ac630306de73f1cdef1b635109e9ec985826e68ea55632d1aeb1b8bba24cbaa09f97dd
@@ -1,7 +1,11 @@
1
1
  module MemKit
2
2
  class Cleaner
3
3
 
4
- def self.start(logger: nil, interval: 120)
4
+ def self.is_running
5
+ return @is_running
6
+ end
7
+
8
+ def self.start(logger: nil, interval: 30)
5
9
  if logger == nil
6
10
  logger = Logger.new(STDOUT)
7
11
  end
@@ -3,7 +3,11 @@ require 'objspace'
3
3
  module MemKit
4
4
  class Profiler
5
5
 
6
- def self.start(logger: nil, interval: 240, limit: nil)
6
+ def self.is_running
7
+ return @is_running
8
+ end
9
+
10
+ def self.start(logger: nil, interval: 120, limit: nil)
7
11
 
8
12
  if logger == nil
9
13
  logger = Logger.new(STDOUT)
@@ -45,9 +49,11 @@ module MemKit
45
49
 
46
50
  def self.collect(limit: nil)
47
51
 
52
+ @rvalue_size ||= GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]
53
+
48
54
  total_memory_size = ObjectSpace.memsize_of_all
49
55
 
50
- result = { total_memory_usage: format_size(total_memory_size), total_allocations: ObjectSpace.each_object{}, objects: [] }
56
+ result = { total_memory_usage: format_size(total_memory_size), total_allocations: ObjectSpace.each_object{}, symbol_count: Symbol.all_symbols.size, object_counts: ObjectSpace.count_objects, objects: [] }
51
57
 
52
58
  ObjectSpace.each_object do |o|
53
59
  update_object(o, result, total_memory_size)
@@ -75,20 +81,22 @@ module MemKit
75
81
  unit = 'Bytes'
76
82
  if bytes >= 100000
77
83
  #format as MB
78
- value = bytes.to_f / 1000.0 / 1000.0
84
+ value = (bytes.to_f / 1000.0 / 1000.0).round(2)
79
85
  unit = 'MB'
80
86
  elsif bytes >= 500
81
87
  #format as KB
82
- value = bytes.to_f / 1000.0
88
+ value = (bytes.to_f / 1000.0).round(2)
83
89
  unit = 'KB'
84
90
  end
85
- return "#{value.round(2)} #{unit}"
91
+ return "#{value} #{unit}"
86
92
  end
87
93
 
88
94
  def self.update_object(object, result, total_memory_size)
89
95
  obj = result[:objects].detect { |o| o[:klass] == object.class }
90
96
  if obj == nil
91
- mem_usage = ObjectSpace.memsize_of(object)
97
+ mem_usage = ObjectSpace.memsize_of(object) + @rvalue_size
98
+ # compensate for API bug
99
+ mem_usage = @rvalue_size if mem_usage > 100_000_000_000
92
100
  obj = { klass: object.class, allocation_count: 1, memory_usage_size: format_size(mem_usage), memory_usage_percentage: format_percentage(mem_usage, total_memory_size), bytes: mem_usage }
93
101
  result[:objects].push(obj)
94
102
  else
@@ -1,3 +1,3 @@
1
1
  module MemKit
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mem_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-12 00:00:00.000000000 Z
11
+ date: 2016-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler