src/share/vm/gc_implementation/shared/gcTraceSend.cpp
Print this page
@@ -26,11 +26,15 @@
#include "gc_implementation/shared/gcHeapSummary.hpp"
#include "gc_implementation/shared/gcTimer.hpp"
#include "gc_implementation/shared/gcTrace.hpp"
#include "gc_implementation/shared/gcWhen.hpp"
#include "gc_implementation/shared/promotionFailedInfo.hpp"
+#include "memory/heapInspection.hpp"
+#include "memory/iterator.hpp"
+#include "trace/traceBackend.hpp"
#include "trace/tracing.hpp"
+#include "utilities/globalDefinitions.hpp"
#ifndef SERIALGC
#include "gc_implementation/g1/g1YCTypes.hpp"
#endif
// All GC dependencies against the trace framework is contained within this file.
@@ -103,10 +107,29 @@
e.set_thread(pf_info.thread()->thread_id());
e.commit();
}
}
+void GCTracer::send_object_count_after_gc_event(klassOop klass, jlong count, julong total_size) const {
+ EventObjectCountAfterGC e;
+ if (e.should_commit()) {
+ e.set_gcId(_shared_gc_info.id());
+ e.set_class(klass);
+ e.set_count(count);
+ e.set_totalSize(total_size);
+ e.commit();
+ }
+}
+
+bool GCTracer::should_send_object_count_after_gc_event() const {
+#if INCLUDE_TRACE
+ return Tracing::enabled(EventObjectCountAfterGC::eventId);
+#else
+ return false;
+#endif
+}
+
#ifndef SERIALGC
void G1NewTracer::send_g1_young_gc_event() {
EventGCG1GarbageCollection e(UNTIMED);
if (e.should_commit()) {
e.set_gcId(_shared_gc_info.id());