mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 20:44:20 +00:00
RUBY_INTERNAL_EVENT_GC_ENTER and
RUBY_INTERNAL_EVENT_GC_EXIT.
When invoking GC process, GC_ENTER event is called.
When exiting from GC process, GC_EXIT event is called.
Incremental GC (incremental marking and lazy sweep) can call
these events many times.
For example (minor marking):
(1) GC_ENTER
- (2) GC_START (minor GC)
(minor marking)
- (3) GC_END_MARK
(start lazy sweep)
(4) GC_EXIT
(ruby process)
(5) GC_ENTER
(lazy sweep)
(6) GC_EXIT
(ruby process)
(... repeat (5), (6))
(7) GC_ENTER
(finish lazy sweep)
- (8) GC_END_SWEEP
(9) GC_EXIT
2nd example (incremental major marking):
(1) GC_ENTER
- (2) GC_START (minor GC)
(start incremental marking)
(3) GC_EXIT
(ruby process)
(4) GC_ENTER
(incremental marking)
(5) GC_EXIT
(ruby process)
(... repeat (4), (5))
(6) GC_ENTER
(finish incremental marking)
- (7) GC_END_MARK
(start lazy sweep)
(8) GC_EXIT
(ruby process)
(9) GC_ENTER
(lazy sweep)
(10) GC_EXIT
(ruby process)
(... repeat (9), (10))
(11) GC_ENTER
(finish lazy marking)
- (12) GC_STOP_SWEEP
(13) GC_EXIT
Thease internal events enable to measure GC pause time completely.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e