1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* gc.c (Init_GC): defined GC::Profiler.raw_data. based on the

patch by Eric Hodel. [ruby-core:37857] [Bug #4991]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nari 2011-09-08 03:57:41 +00:00
parent f1cdbd7bc8
commit 599071b700
2 changed files with 33 additions and 0 deletions

View file

@ -1,3 +1,8 @@
Thu Sep 8 12:43:18 2011 Narihiro Nakamura <authornari@gmail.com>
* gc.c (Init_GC): defined GC::Profiler.raw_data. based on the
patch by Eric Hodel. [ruby-core:37857] [Bug #4991]
Thu Sep 8 09:02:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* gc.c (id2ref): objects which are unmarked but not in sweep_slots

28
gc.c
View file

@ -3434,6 +3434,33 @@ gc_malloc_allocations(VALUE self)
}
#endif
/*
* call-seq:
* GC::Profiler.raw_data -> [Hash, ...]
*
* Returns an Array of individual raw profile data Hashes ordered
* from earliest to latest by <tt>:GC_INVOKE_TIME</tt>. For example:
*
* [{:GC_TIME=>1.3000000000000858e-05,
* :GC_INVOKE_TIME=>0.010634999999999999,
* :HEAP_USE_SIZE=>289640,
* :HEAP_TOTAL_SIZE=>588960,
* :HEAP_TOTAL_OBJECTS=>14724,
* :GC_IS_MARKED=>false},
* ...
* ]
*
* The keys mean:
*
* +:GC_TIME+:: Time taken for this run in milliseconds
* +:GC_INVOKE_TIME+:: Time the GC was invoked since startup in seconds
* +:HEAP_USE_SIZE+:: Bytes of heap used
* +:HEAP_TOTAL_SIZE+:: Size of heap in bytes
* +:HEAP_TOTAL_OBJECTS+:: Number of objects
* +:GC_IS_MARKED+:: Is the GC in the mark phase
*
*/
static VALUE
gc_profile_record_get(void)
{
@ -3626,6 +3653,7 @@ Init_GC(void)
rb_mProfiler = rb_define_module_under(rb_mGC, "Profiler");
rb_define_singleton_method(rb_mProfiler, "enabled?", gc_profile_enable_get, 0);
rb_define_singleton_method(rb_mProfiler, "enable", gc_profile_enable, 0);
rb_define_singleton_method(rb_mProfiler, "raw_data", gc_profile_record_get, 0);
rb_define_singleton_method(rb_mProfiler, "disable", gc_profile_disable, 0);
rb_define_singleton_method(rb_mProfiler, "clear", gc_profile_clear, 0);
rb_define_singleton_method(rb_mProfiler, "result", gc_profile_result, 0);