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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85fbefd746a7383bc1891bea286e39be5f311b55e9e1bd8a10f9e807939c5686
4
- data.tar.gz: 9268c65c42714ec98accf5e4a3f2bf36383a2c539e26850542e27b475fe93f12
3
+ metadata.gz: 8f865010e37ad98c3d1dfc80fde69b7d3a32ef06a2166dca3c38d0829c7f17fe
4
+ data.tar.gz: 5939197c9c2824d56b3d520a8106c4070694f8a5ba66575eb021ea8223a2f8f8
5
5
  SHA512:
6
- metadata.gz: bf86b44edf7077e7d7ac6cc3c1af54379e3a5aaccfebced1a1b81aace9b1d6be2683b99d25cf8bf9e54492c0a14e405a003b93b5c4f522e9eb3839aabf6dbddb
7
- data.tar.gz: 2778fbe72cbb71a5c2a4892f88b55dc01249a4f595ad4138eb15b7955c6ea09869ceae6f067d99ea1c5f92c3b7b0c0a5c045ae78c267321adfc66571c0b03c3f
6
+ metadata.gz: c4374a43ebbb3261281172d3ec46ba575c5707c82bca657501c5c3fe72dbae0ff3d384a5ce53179e7dd4d55e2aef256391c88484d7ea947da45477e7a06aa082
7
+ data.tar.gz: 91e28f5b4284598bb44ee9dde9306fbf2f6d46fe41a3ad3b7cce3c94d32315db249c8a6c427e0a9b01d76c73c196249efdc03aa23eea311811fac304764f2568
data/.rubocop.yml CHANGED
@@ -36,7 +36,7 @@ Layout/MultilineAssignmentLayout:
36
36
  Enabled: false
37
37
 
38
38
  Layout/LineLength:
39
- Max: 180
39
+ Enabled: false
40
40
 
41
41
  Lint/IdentityComparison:
42
42
  Enabled: false
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
@@ -14,7 +14,7 @@ Rake::TestTask.new do |task|
14
14
  task.pattern = 'test/test_*.rb'
15
15
  end
16
16
 
17
- # Update RBS signature
17
+ desc 'Update RBS signature'
18
18
  task :'rbs:update' do
19
19
  sh 'bundle exec rbs-inline --output lib'
20
20
  end
@@ -16,12 +16,15 @@ class LeakProfiler
16
16
  # @rbs interval: Integer
17
17
  # @rbs max_allocations: Integer
18
18
  # @rbs max_referrers: Integer
19
- def initialize(logger:, interval:, max_allocations:, max_referrers:, max_sample_objects:)
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
- def initialize: (logger: untyped, interval: Integer, max_allocations: Integer, max_referrers: Integer, max_sample_objects: untyped) -> untyped
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.0
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: 3.6.9
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: []