memory-profiler 1.0.0 → 1.0.1
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.
- data/Gemfile.lock +1 -1
- data/Rakefile +11 -1
- data/lib/memory-profiler.rb +16 -16
- metadata +9 -7
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -25,7 +25,6 @@ task :gemspec do
|
|
25
25
|
gemspec.validate
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
28
|
desc "Build gem locally"
|
30
29
|
task :build => :gemspec do
|
31
30
|
system "gem#$version build #{gemspec.name}.gemspec"
|
@@ -38,6 +37,17 @@ task :install => :build do
|
|
38
37
|
system "gem#$version install pkg-#$version/#{gemspec.name}-#{gemspec.version}"
|
39
38
|
end
|
40
39
|
|
40
|
+
desc "Publish gem"
|
41
|
+
task :push => :build do
|
42
|
+
system "gem#$version push pkg-#$version/#{gemspec.name}-#{gemspec.version}"
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
desc "Generate rdoc documentation"
|
47
|
+
task :rdoc do
|
48
|
+
system "rdoc#$version #{gemspec.rdoc_options.map{|o| o =~ /\s/ ? '"'+o+'"' : o}.join(' ')}"
|
49
|
+
end
|
50
|
+
|
41
51
|
|
42
52
|
desc "Clean automatically generated files"
|
43
53
|
task :clean do
|
data/lib/memory-profiler.rb
CHANGED
@@ -3,20 +3,20 @@
|
|
3
3
|
=begin
|
4
4
|
|
5
5
|
Author: Matthew Kerwin <matthew@kerwin.net.au>
|
6
|
-
Version: 1.0
|
7
|
-
Date: 2011-01-
|
6
|
+
Version: 1.0.1
|
7
|
+
Date: 2011-01-31
|
8
8
|
|
9
9
|
|
10
|
-
Copyright 2011 Matthew Kerwin
|
10
|
+
Copyright 2011 Matthew Kerwin.
|
11
11
|
|
12
12
|
Licensed under the Apache License, Version 2.0 (the "License");
|
13
13
|
you may not use this file except in compliance with the License.
|
14
|
-
You may obtain a copy of at
|
14
|
+
You may obtain a copy of the License at
|
15
15
|
|
16
16
|
http://www.apache.org/licenses/LICENSE-2.0
|
17
17
|
|
18
18
|
Unless required by applicable law or agreed to in writing, software
|
19
|
-
distributed under the License is distributed on an "AS IS"
|
19
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
20
20
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
21
21
|
See the License for the specific language governing permissions and
|
22
22
|
limitations under the License.
|
@@ -48,7 +48,7 @@ module MemoryProfiler
|
|
48
48
|
|
49
49
|
#
|
50
50
|
# Begins an analysis thread that runs periodically, reporting to a text
|
51
|
-
# file at
|
51
|
+
# file at: /tmp/memory_profiler-<pid>.log
|
52
52
|
#
|
53
53
|
# Returns the filename used.
|
54
54
|
#
|
@@ -101,7 +101,7 @@ module MemoryProfiler
|
|
101
101
|
end
|
102
102
|
|
103
103
|
#
|
104
|
-
# Generates
|
104
|
+
# Generates an instantaneous report on the current Ruby ObjectSpace, saved to
|
105
105
|
# a text file at: /tmp/memory_profiler-<pid>-<time>.log
|
106
106
|
#
|
107
107
|
# Returns the filename used.
|
@@ -136,7 +136,7 @@ module MemoryProfiler
|
|
136
136
|
# starts the analyser, and waits for a call to #restart or #stop.
|
137
137
|
#
|
138
138
|
# Returned data is an array of:
|
139
|
-
# [
|
139
|
+
# [ [Class, current_usage, usage_delta], ... ]
|
140
140
|
#
|
141
141
|
# Options:
|
142
142
|
# :sort_by => :current # how to order classes; :current | :delta | :absdelta | :none
|
@@ -151,7 +151,7 @@ module MemoryProfiler
|
|
151
151
|
# :marshall_size => false # see ObjectSpaceAnalyser#analyse
|
152
152
|
#
|
153
153
|
def self.start(opt = {}, &block)
|
154
|
-
|
154
|
+
opt = DEFAULTS.merge(opt)
|
155
155
|
if block_given?
|
156
156
|
# get pre-block analysis of ObjectSpace
|
157
157
|
GC.start if opt[:force_gc]
|
@@ -183,7 +183,7 @@ module MemoryProfiler
|
|
183
183
|
end
|
184
184
|
|
185
185
|
#
|
186
|
-
# Stops the current analysis and
|
186
|
+
# Stops the current analysis and emits the results.
|
187
187
|
#
|
188
188
|
# See: #start
|
189
189
|
#
|
@@ -220,7 +220,7 @@ module MemoryProfiler
|
|
220
220
|
res
|
221
221
|
end
|
222
222
|
|
223
|
-
#
|
223
|
+
# => [ [Class, current, delta], ... ]
|
224
224
|
def self._delta(curr, prev, opt={}) #:nodoc:
|
225
225
|
opt = DEFAULTS.merge(opt)
|
226
226
|
|
@@ -242,7 +242,7 @@ module MemoryProfiler
|
|
242
242
|
when :absdelta
|
243
243
|
data = data.sort_by{|k,c,d| -( d.abs ) }
|
244
244
|
else
|
245
|
-
warn "
|
245
|
+
warn "MemoryProfiler: invalid option :sort_by => #{opt[:sort_by].inspect}; using :none"
|
246
246
|
opt[:limit] = -1
|
247
247
|
end
|
248
248
|
data = data[0,opt[:limit]] if opt[:limit] > 0 and opt[:limit] < data.length
|
@@ -252,7 +252,7 @@ module MemoryProfiler
|
|
252
252
|
end
|
253
253
|
|
254
254
|
#
|
255
|
-
# Formats data, such as that
|
255
|
+
# Formats data, such as that returned by #start , into a printable,
|
256
256
|
# readable string.
|
257
257
|
#
|
258
258
|
def self.format(data)
|
@@ -266,11 +266,11 @@ module MemoryProfiler
|
|
266
266
|
#
|
267
267
|
# Returns a hash mapping each Class to its usage.
|
268
268
|
#
|
269
|
-
# If opt[:marshall_size] is true, the usage is estimated using Marshall.dump() for each instance
|
269
|
+
# If opt[:marshall_size] is true, the usage is estimated using Marshall.dump() for each instance;
|
270
270
|
# otherwise it is a simple instance count.
|
271
271
|
#
|
272
272
|
# If opt[:string_debug] is true, the analyser writes a text file containing every string
|
273
|
-
# in the Ruby ObjectSpace, at: /tmp/memory_profiler-<pid>-
|
273
|
+
# in the Ruby ObjectSpace, at: /tmp/memory_profiler-<pid>-strings-<time>.log
|
274
274
|
#
|
275
275
|
# Uses opt[:only] and opt[:ignore] , as per MemoryProfiler#start
|
276
276
|
#
|
@@ -285,7 +285,7 @@ module MemoryProfiler
|
|
285
285
|
str = [] if string_debug
|
286
286
|
ObjectSpace.each_object do |o|
|
287
287
|
if res[o.class] or ((only.empty? or only.any?{|y| o.is_a? y }) and ign.none?{|x| o.is_a? x })
|
288
|
-
res[o.class] += (
|
288
|
+
res[o.class] += (marshall_size ? self.__sizeof(o) : 1)
|
289
289
|
end
|
290
290
|
str.push o.inspect if string_debug and o.class == String
|
291
291
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memory-profiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew Kerwin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-31 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -30,11 +30,11 @@ extra_rdoc_files: []
|
|
30
30
|
|
31
31
|
files:
|
32
32
|
- lib/memory-profiler.rb
|
33
|
-
- Gemfile
|
34
|
-
- README
|
35
33
|
- Rakefile
|
36
|
-
- Gemfile.lock
|
37
34
|
- LICENSE
|
35
|
+
- README
|
36
|
+
- Gemfile.lock
|
37
|
+
- Gemfile
|
38
38
|
has_rdoc: true
|
39
39
|
homepage: http://code.google.com/p/memory-profiler-ruby/
|
40
40
|
licenses:
|
@@ -46,6 +46,8 @@ rdoc_options:
|
|
46
46
|
- --main
|
47
47
|
- MemoryProfiler
|
48
48
|
- --line-numbers
|
49
|
+
- --tab-width
|
50
|
+
- "2"
|
49
51
|
require_paths:
|
50
52
|
- lib
|
51
53
|
required_ruby_version: !ruby/object:Gem::Requirement
|