Print this page


Split Split Close
Expand all
Collapse all
          --- old/src/share/vm/gc_implementation/shared/gcTrace.cpp
          +++ new/src/share/vm/gc_implementation/shared/gcTrace.cpp
↓ open down ↓ 89 lines elided ↑ open up ↑
  90   90    send_reference_stats_event(REF_FINAL, rps.final_count());
  91   91    send_reference_stats_event(REF_PHANTOM, rps.phantom_count());
  92   92  }
  93   93  
  94   94  class ObjectCountEventSenderClosure : public KlassInfoClosure {
  95   95    GCTracer* _gc_tracer;
  96   96   public:
  97   97    ObjectCountEventSenderClosure(GCTracer* gc_tracer) : _gc_tracer(gc_tracer) {}
  98   98   private:
  99   99    void do_cinfo(KlassInfoEntry* entry) {
 100      -    _gc_tracer->send_object_count_after_gc_event(entry->klass(), entry->count(),
 101      -                                                 entry->words() * BytesPerWord);
      100 +    if (is_visible_klass(entry->klass())) {
      101 +      _gc_tracer->send_object_count_after_gc_event(entry->klass(), entry->count(),
      102 +                                                   entry->words() * BytesPerWord);
      103 +      }
 102  104    }
      105 +
      106 +  // Do not expose internal implementation specific classes
      107 +  bool is_visible_klass(klassOop k) {
      108 +    return k->klass_part()->oop_is_instance() ||
      109 +           (k->klass_part()->oop_is_array() && k != Universe::systemObjArrayKlassObj());
      110 +  }
 103  111  };
 104  112  
 105  113  void GCTracer::report_object_count_after_gc(BoolObjectClosure *is_alive_cl) {
 106  114    if (should_send_object_count_after_gc_event()) {
 107  115      ResourceMark rm;
 108  116  
 109  117      KlassInfoTable cit(HeapInspection::start_of_perm_gen());
 110  118      if (!cit.allocation_failed()) {
 111  119        ObjectCountEventSenderClosure event_sender(this);
 112  120        HeapInspection::instance_inspection(&cit, &event_sender, false, is_alive_cl);
↓ open down ↓ 84 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX