Class: LeakProfiler
- Inherits:
-
Object
- Object
- LeakProfiler
- Defined in:
- lib/leak_profiler/memory_usage.rb,
lib/leak_profiler/allocations.rb,
lib/leak_profiler/leak_profiler.rb,
lib/leak_profiler/memory_memsize.rb,
ext/leak_profiler/leak_profiler.c
Overview
rbs_inline: enabled
Defined Under Namespace
Classes: Allocations, MemoryMemsize, MemoryUsage
Instance Method Summary collapse
-
#initialize(output_dir: './leak_profiler') ⇒ LeakProfiler
constructor
A new instance of LeakProfiler.
- #report(interval: 30, max_allocations: 10, max_referrers: 3, max_sample_objects: 100, run_gc: false, logger: nil, filename: nil) ⇒ Object
- #report_memsize(interval: 1, filename: nil) ⇒ Object
- #report_rss(interval: 1, filename: nil) ⇒ Object
- #shutdown ⇒ Object
Constructor Details
#initialize(output_dir: './leak_profiler') ⇒ LeakProfiler
Returns a new instance of LeakProfiler.
14 15 16 17 18 19 |
# File 'lib/leak_profiler/leak_profiler.rb', line 14 def initialize(output_dir: './leak_profiler') @output_dir = output_dir @threads = [] FileUtils.mkdir_p(@output_dir) end |
Instance Method Details
#report(interval: 30, max_allocations: 10, max_referrers: 3, max_sample_objects: 100, run_gc: false, logger: nil, filename: nil) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/leak_profiler/leak_profiler.rb', line 29 def report(interval: 30, max_allocations: 10, max_referrers: 3, max_sample_objects: 100, run_gc: false, logger: nil, filename: nil) filename ||= "leak_profiler-#{Process.pid}.log" logger ||= Logger.new(File.join(@output_dir, filename)) 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) profiler.report @threads << profiler.thread self end |
#report_memsize(interval: 1, filename: nil) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/leak_profiler/leak_profiler.rb', line 53 def report_memsize(interval: 1, filename: nil) profiler = LeakProfiler::MemoryMemsize.new(output_dir: @output_dir, interval: interval, filename: filename) profiler.report @threads << profiler.thread self end |
#report_rss(interval: 1, filename: nil) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/leak_profiler/leak_profiler.rb', line 42 def report_rss(interval: 1, filename: nil) profiler = LeakProfiler::MemoryUsage.new(output_dir: @output_dir, interval: interval, filename: filename) profiler.report @threads << profiler.thread self end |
#shutdown ⇒ Object
61 62 63 64 |
# File 'lib/leak_profiler/leak_profiler.rb', line 61 def shutdown @threads.each(&:kill) @threads.each(&:join) end |