leak_profiler 0.8.0 → 0.8.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/README.md +1 -0
- data/Rakefile +1 -1
- data/lib/leak_profiler/allocations.rb +6 -1
- data/lib/leak_profiler/leak_profiler.rb +3 -2
- data/sig/generated/leak_profiler/allocations.rbs +3 -1
- data/sig/generated/leak_profiler/leak_profiler.rbs +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f865010e37ad98c3d1dfc80fde69b7d3a32ef06a2166dca3c38d0829c7f17fe
|
|
4
|
+
data.tar.gz: 5939197c9c2824d56b3d520a8106c4070694f8a5ba66575eb021ea8223a2f8f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c4374a43ebbb3261281172d3ec46ba575c5707c82bca657501c5c3fe72dbae0ff3d384a5ce53179e7dd4d55e2aef256391c88484d7ea947da45477e7a06aa082
|
|
7
|
+
data.tar.gz: 91e28f5b4284598bb44ee9dde9306fbf2f6d46fe41a3ad3b7cce3c94d32315db249c8a6c427e0a9b01d76c73c196249efdc03aa23eea311811fac304764f2568
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
|
@@ -65,6 +65,7 @@ Referrers ----------------------------------------------------------------------
|
|
|
65
65
|
* `max_allocations` (default `10`): Outputs the specified number of objects that use a lot of memory.
|
|
66
66
|
* `max_referrers` (default `3`): Outputs the number of references in order of the amount of memory used.
|
|
67
67
|
* `max_sample_objects` (default `100`): Sampling objects to detect referrer.
|
|
68
|
+
* `run_gc` (default `false`): Whether to invoke `GC.start` before logging to exclude temporary objects from the metrics.
|
|
68
69
|
* `logger` (defalut `nil`): Specify the logger object if you want to use custom logger.
|
|
69
70
|
* `filename` (defalut `nil`): Specify the filename if you want to use custom filename.
|
|
70
71
|
|
data/Rakefile
CHANGED
|
@@ -16,12 +16,15 @@ class LeakProfiler
|
|
|
16
16
|
# @rbs interval: Integer
|
|
17
17
|
# @rbs max_allocations: Integer
|
|
18
18
|
# @rbs max_referrers: Integer
|
|
19
|
-
|
|
19
|
+
# @rbs max_sample_objects: Integer
|
|
20
|
+
# @rbs run_gc: bool
|
|
21
|
+
def initialize(logger:, interval:, max_allocations:, max_referrers:, max_sample_objects:, run_gc: false)
|
|
20
22
|
@logger = logger
|
|
21
23
|
@interval = interval
|
|
22
24
|
@max_allocations = max_allocations
|
|
23
25
|
@max_referrers = max_referrers
|
|
24
26
|
@max_sample_objects = max_sample_objects
|
|
27
|
+
@run_gc = run_gc
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
def report
|
|
@@ -31,6 +34,8 @@ class LeakProfiler
|
|
|
31
34
|
sleep(@interval)
|
|
32
35
|
ObjectSpace.trace_object_allocations_stop
|
|
33
36
|
|
|
37
|
+
GC.start if @run_gc
|
|
38
|
+
|
|
34
39
|
allocations = Hash.new { |h, k| h[k] = {} }
|
|
35
40
|
allocations_by_class = Hash.new { |h, k| h[k] = 0 }
|
|
36
41
|
|
|
@@ -22,13 +22,14 @@ class LeakProfiler
|
|
|
22
22
|
# @rbs max_allocations: Integer
|
|
23
23
|
# @rbs max_referrers: Integer
|
|
24
24
|
# @rbs max_sample_objects: Integer
|
|
25
|
+
# @rbs run_gc: bool
|
|
25
26
|
# @rbs logger: untyped
|
|
26
27
|
# @rbs filename: String
|
|
27
28
|
# @rbs return: self
|
|
28
|
-
def report(interval: 30, max_allocations: 10, max_referrers: 3, max_sample_objects: 100, logger: nil, filename: nil)
|
|
29
|
+
def report(interval: 30, max_allocations: 10, max_referrers: 3, max_sample_objects: 100, run_gc: false, logger: nil, filename: nil)
|
|
29
30
|
filename ||= "leak_profiler-#{Process.pid}.log"
|
|
30
31
|
logger ||= Logger.new(File.join(@output_dir, filename))
|
|
31
|
-
profiler = LeakProfiler::Allocations.new(logger: logger, interval: interval, max_allocations: max_allocations, max_referrers: max_referrers, max_sample_objects: max_sample_objects)
|
|
32
|
+
profiler = LeakProfiler::Allocations.new(logger: logger, interval: interval, max_allocations: max_allocations, max_referrers: max_referrers, max_sample_objects: max_sample_objects, run_gc: run_gc)
|
|
32
33
|
profiler.report
|
|
33
34
|
@threads << profiler.thread
|
|
34
35
|
|
|
@@ -10,7 +10,9 @@ class LeakProfiler
|
|
|
10
10
|
# @rbs interval: Integer
|
|
11
11
|
# @rbs max_allocations: Integer
|
|
12
12
|
# @rbs max_referrers: Integer
|
|
13
|
-
|
|
13
|
+
# @rbs max_sample_objects: Integer
|
|
14
|
+
# @rbs run_gc: bool
|
|
15
|
+
def initialize: (logger: untyped, interval: Integer, max_allocations: Integer, max_referrers: Integer, max_sample_objects: Integer, ?run_gc: bool) -> untyped
|
|
14
16
|
|
|
15
17
|
def report: () -> untyped
|
|
16
18
|
|
|
@@ -9,10 +9,11 @@ class LeakProfiler
|
|
|
9
9
|
# @rbs max_allocations: Integer
|
|
10
10
|
# @rbs max_referrers: Integer
|
|
11
11
|
# @rbs max_sample_objects: Integer
|
|
12
|
+
# @rbs run_gc: bool
|
|
12
13
|
# @rbs logger: untyped
|
|
13
14
|
# @rbs filename: String
|
|
14
15
|
# @rbs return: self
|
|
15
|
-
def report: (?interval: Integer, ?max_allocations: Integer, ?max_referrers: Integer, ?max_sample_objects: Integer, ?logger: untyped, ?filename: String) -> self
|
|
16
|
+
def report: (?interval: Integer, ?max_allocations: Integer, ?max_referrers: Integer, ?max_sample_objects: Integer, ?run_gc: bool, ?logger: untyped, ?filename: String) -> self
|
|
16
17
|
|
|
17
18
|
# @rbs interval: Integer
|
|
18
19
|
# @rbs filename: String
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: leak_profiler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Watson
|
|
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
71
71
|
- !ruby/object:Gem::Version
|
|
72
72
|
version: '0'
|
|
73
73
|
requirements: []
|
|
74
|
-
rubygems_version:
|
|
74
|
+
rubygems_version: 4.0.4
|
|
75
75
|
specification_version: 4
|
|
76
76
|
summary: A simple profiler for Ruby to detect memory leak.
|
|
77
77
|
test_files: []
|