allocation_tracer 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/allocation_tracer/version.rb +1 -1
- data/lib/rack/allocation_tracer.rb +27 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d67c74d74d79cd3fac954e0d989e59e40871d215
|
4
|
+
data.tar.gz: 40ea48ef4e9ad9240b978e7a2ec3fcc62c522342
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9e6e3a4318f1b875684c096edabd4a3895ce9672209daa069a89b4589ab0146fb5f21dc445515814b4d9fa0f89d1fcefc240722f7e15bdef2c0c5a41eacd2b8
|
7
|
+
data.tar.gz: 1316fda93a0207643dd47dc3450988fcd6b0c4b571232217b1b4409b09d70766669111ec694d37acf567820146600b287b16037ae5ee255f0005817c9e6c7cf4
|
data/README.md
CHANGED
@@ -236,6 +236,7 @@ You can access the following pages.
|
|
236
236
|
* http://host/allocation_tracer/
|
237
237
|
* http://host/allocation_tracer/allocated_count_table
|
238
238
|
* http://host/allocation_tracer/freed_count_table_page
|
239
|
+
* http://host/allocation_tracer/lifetime_table
|
239
240
|
|
240
241
|
## Contributing
|
241
242
|
|
@@ -53,24 +53,38 @@ module Rack
|
|
53
53
|
count_table_page ObjectSpace::AllocationTracer.freed_count_table
|
54
54
|
end
|
55
55
|
|
56
|
+
def lifetime_table_page
|
57
|
+
table = []
|
58
|
+
max_age = 0
|
59
|
+
ObjectSpace::AllocationTracer.lifetime_table.each{|type, ages|
|
60
|
+
max_age = [max_age, ages.size - 1].max
|
61
|
+
table << [type, *ages]
|
62
|
+
}
|
63
|
+
headers = ['type', *(0..max_age)].map{|e| "<th>#{e}</th>"}.join("\n")
|
64
|
+
body = table.map{|cols|
|
65
|
+
"<tr>" + cols.map{|c| "<td>#{c}</td>"}.join("\n") + "</tr>"
|
66
|
+
}.join("\n")
|
67
|
+
"<table border='1'><tr>#{headers}</tr>\n#{body}</table>"
|
68
|
+
end
|
69
|
+
|
56
70
|
def call env
|
57
71
|
if /\A\/allocation_tracer\// =~ env["PATH_INFO"]
|
58
72
|
result = ObjectSpace::AllocationTracer.result
|
59
73
|
ObjectSpace::AllocationTracer.pause
|
60
74
|
|
61
|
-
case env["PATH_INFO"]
|
62
|
-
when /lifetime_table/
|
63
|
-
raise "Unsupported: lifetime_table"
|
64
|
-
when /allocated_count_table/
|
65
|
-
text = allocated_count_table_page
|
66
|
-
when /freed_count_table/
|
67
|
-
text = freed_count_table_page
|
68
|
-
else
|
69
|
-
text = allocation_trace_page result, env
|
70
|
-
end
|
71
|
-
|
72
75
|
begin
|
73
|
-
|
76
|
+
html = case env["PATH_INFO"]
|
77
|
+
when /lifetime_table/
|
78
|
+
lifetime_table_page
|
79
|
+
when /allocated_count_table/
|
80
|
+
allocated_count_table_page
|
81
|
+
when /freed_count_table/
|
82
|
+
freed_count_table_page
|
83
|
+
else
|
84
|
+
allocation_trace_page result, env
|
85
|
+
end
|
86
|
+
#
|
87
|
+
[200, {"Content-Type" => "text/html"}, [html]]
|
74
88
|
ensure
|
75
89
|
ObjectSpace::AllocationTracer.resume
|
76
90
|
end
|
@@ -84,6 +98,7 @@ module Rack
|
|
84
98
|
def initialize *args
|
85
99
|
super
|
86
100
|
ObjectSpace::AllocationTracer.setup %i(path line class)
|
101
|
+
ObjectSpace::AllocationTracer.lifetime_table_setup true
|
87
102
|
ObjectSpace::AllocationTracer.start
|
88
103
|
end
|
89
104
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: allocation_tracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Koichi Sasada
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|