Module: Heapfrag

Defined in:
lib/heapfrag.rb,
lib/heapfrag/version.rb,
ext/heapfrag/heapfrag.c

Defined Under Namespace

Classes: Error

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.stat ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'ext/heapfrag/heapfrag.c', line 92

static VALUE
heapfrag_stat(VALUE mod)
{
  struct heap_info info = {};
  VALUE rv = rb_hash_new();
  size_t total_pages = rb_gc_stat(sym_heap_allocated_pages);

  rb_objspace_each_objects(count_objects_i, &info);
  rb_hash_aset(rv, sym_fragmented_pages, INT2FIX(total_pages - info.pages_full - info.pages_free));
  rb_hash_aset(rv, sym_pages_total, INT2FIX(total_pages));
  rb_hash_aset(rv, sym_pages_seen, INT2FIX(info.pages_seen));
  rb_hash_aset(rv, sym_pages_walive, INT2FIX(info.pages_walive));
  rb_hash_aset(rv, sym_pages_wdead, INT2FIX(info.pages_wdead));
  rb_hash_aset(rv, sym_pages_free, INT2FIX(info.pages_free));
  rb_hash_aset(rv, sym_pages_full, INT2FIX(info.pages_full));
  rb_hash_aset(rv, sym_alive_objs, INT2FIX(info.alive_objs));
  rb_hash_aset(rv, sym_dead_objs, INT2FIX(info.dead_objs));
  rb_hash_aset(rv, sym_pages_fill_cdf,
               rb_ary_new_from_args(6, INT2FIX(info.cdf[0]), INT2FIX(info.cdf[1]), INT2FIX(info.cdf[2]),
                                    INT2FIX(info.cdf[3]), INT2FIX(info.cdf[4]), INT2FIX(info.cdf[5])));

  return rv;
}