mem_kit 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mem_kit/profiler.rb +27 -14
- data/lib/mem_kit/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f671ccae048698c5be52cb5e12a67d7854b9d845
|
4
|
+
data.tar.gz: 02235890dd54c8a6520c10549ebdaaaf78bd1fb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 443b68d94d466d7b44c46054b54dcd37eb0988877f786b335f4f34d6c9c5541870d7cf65cd4ce52db923e6e14e673ac27df1fea5d8718b6aafcfa8e519f9ffff
|
7
|
+
data.tar.gz: ccb26fd07d663557f8dc3c339eb7c85fd78b1329fddc9b31182f98b4bba020b95c2c88a60e528aa038a2337411e1ed3184bd2b1fecc3bc32ba8773fdacc86943
|
data/lib/mem_kit/profiler.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'objspace'
|
2
|
+
|
1
3
|
module MemKit
|
2
4
|
class Profiler
|
3
5
|
|
@@ -21,25 +23,13 @@ module MemKit
|
|
21
23
|
|
22
24
|
@is_running = true
|
23
25
|
|
24
|
-
require 'objspace'
|
25
|
-
|
26
26
|
@thread = Thread.new do
|
27
27
|
|
28
28
|
while @is_running == true do
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
result = { total_memory_usage: format_size(total_memory_size), total_allocations: ObjectSpace.each_object{}, objects: [] }
|
33
|
-
|
34
|
-
ObjectSpace.each_object do |o|
|
35
|
-
update_object(o, result, total_memory_size)
|
36
|
-
end
|
37
|
-
|
38
|
-
result[:objects].sort! { |a,b| b[:bytes] <=> a[:bytes] }
|
30
|
+
GC.start
|
39
31
|
|
40
|
-
|
41
|
-
result[:objects] = result[:objects][0, limit]
|
42
|
-
end
|
32
|
+
result = collect(limit: limit)
|
43
33
|
|
44
34
|
logger.debug("[MemKit::Profiler}] - #{JSON.dump(result)}")
|
45
35
|
|
@@ -53,6 +43,29 @@ module MemKit
|
|
53
43
|
|
54
44
|
end
|
55
45
|
|
46
|
+
def self.collect(limit:)
|
47
|
+
|
48
|
+
total_memory_size = ObjectSpace.memsize_of_all
|
49
|
+
|
50
|
+
result = { total_memory_usage: format_size(total_memory_size), total_allocations: ObjectSpace.each_object{}, objects: [] }
|
51
|
+
|
52
|
+
ObjectSpace.each_object do |o|
|
53
|
+
if o.class == Object
|
54
|
+
next
|
55
|
+
end
|
56
|
+
update_object(o, result, total_memory_size)
|
57
|
+
end
|
58
|
+
|
59
|
+
result[:objects].sort! { |a,b| b[:bytes] <=> a[:bytes] }
|
60
|
+
|
61
|
+
if limit != nil
|
62
|
+
result[:objects] = result[:objects][0, limit]
|
63
|
+
end
|
64
|
+
|
65
|
+
return result
|
66
|
+
|
67
|
+
end
|
68
|
+
|
56
69
|
def self.stop
|
57
70
|
@is_running = false
|
58
71
|
if @thread != nil
|
data/lib/mem_kit/version.rb
CHANGED