--- old/src/share/vm/gc_implementation/shared/gcTrace.cpp 2013-05-03 15:47:57.186354358 +0200 +++ new/src/share/vm/gc_implementation/shared/gcTrace.cpp 2013-05-03 15:47:57.114354359 +0200 @@ -97,8 +97,16 @@ ObjectCountEventSenderClosure(GCTracer* gc_tracer) : _gc_tracer(gc_tracer) {} private: void do_cinfo(KlassInfoEntry* entry) { - _gc_tracer->send_object_count_after_gc_event(entry->klass(), entry->count(), - entry->words() * BytesPerWord); + if (is_visible_klass(entry->klass())) { + _gc_tracer->send_object_count_after_gc_event(entry->klass(), entry->count(), + entry->words() * BytesPerWord); + } + } + + // Do not expose internal implementation specific classes + bool is_visible_klass(klassOop k) { + return (k->klass_part()->oop_is_instance() || k->klass_part()->oop_is_array()) && + k != Universe::systemObjArrayKlassObj(); } };