Class: LeakProfiler
- Inherits:
-
Object
show all
- 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
Defined Under Namespace
Classes: Allocations, MemoryMemsize, MemoryUsage
Instance Method Summary
collapse
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, logger: nil, filename: nil) ⇒ Object
28
29
30
31
32
33
34
35
36
|
# File 'lib/leak_profiler/leak_profiler.rb', line 28
def report(interval: 30, max_allocations: 10, max_referrers: 3, max_sample_objects: 100, 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)
profiler.report
@threads << profiler.thread
self
end
|
#report_memsize(interval: 1, filename: nil) ⇒ Object
52
53
54
55
56
57
58
|
# File 'lib/leak_profiler/leak_profiler.rb', line 52
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
|
41
42
43
44
45
46
47
|
# File 'lib/leak_profiler/leak_profiler.rb', line 41
def (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
60
61
62
63
|
# File 'lib/leak_profiler/leak_profiler.rb', line 60
def shutdown
@threads.each(&:kill)
@threads.each(&:join)
end
|