src/share/vm/gc_implementation/shared/gcTrace.hpp

Print this page

        

@@ -40,10 +40,11 @@
 class GCHeapSummary;
 class PermGenSummary;
 class PSHeapSummary;
 class ReferenceProcessorStats;
 class TimePartitions;
+class BoolObjectClosure;
 
 class SharedGCInfo VALUE_OBJ_CLASS_SPEC {
   static const jlong UNSET_TIMESTAMP = -1;
 
  public:

@@ -107,18 +108,20 @@
 };
 
 #endif // SERIALGC
 
 class GCTracer : public ResourceObj {
+  friend class ObjectCountEventSenderClosure;
  protected:
   SharedGCInfo _shared_gc_info;
 
  public:
   void report_gc_start(GCCause::Cause cause, jlong timestamp);
   void report_gc_end(jlong timestamp, TimePartitions* time_partitions);
   void report_gc_heap_summary(GCWhen::Type when, const GCHeapSummary& heap_summary, const PermGenSummary& perm_gen_summary) const;
   void report_gc_reference_stats(const ReferenceProcessorStats& rp) const;
+  void report_object_count_after_gc(BoolObjectClosure* object_filter);
 
   bool has_reported_gc_start() const;
 
  protected:
   GCTracer(GCName name) : _shared_gc_info(name) {}

@@ -129,10 +132,12 @@
   void send_garbage_collection_event() const;
   void send_gc_heap_summary_event(GCWhen::Type when, const GCHeapSummary& heap_summary) const;
   void send_perm_gen_summary_event(GCWhen::Type when, const PermGenSummary& perm_gen_summary) const;
   void send_reference_stats_event(ReferenceType type, size_t count) const;
   void send_phase_events(TimePartitions* time_partitions) const;
+  void send_object_count_after_gc_event(klassOop klass, jlong count, julong total_size) const;
+  bool should_send_object_count_after_gc_event() const;
 };
 
 class YoungGCTracer : public GCTracer {
  protected:
   YoungGCTracer(GCName name) : GCTracer(name) {}