src/share/vm/gc_implementation/shared/gcTrace.hpp
Print this page
*** 33,42 ****
--- 33,43 ----
#include "memory/referenceType.hpp"
#if INCLUDE_ALL_GCS
#include "gc_implementation/g1/g1YCTypes.hpp"
#endif
#include "utilities/macros.hpp"
+ #include "utilities/ticks.hpp"
typedef uint GCId;
class EvacuationInfo;
class GCHeapSummary;
*** 45,92 ****
class ReferenceProcessorStats;
class TimePartitions;
class BoolObjectClosure;
class SharedGCInfo VALUE_OBJ_CLASS_SPEC {
- static const jlong UNSET_TIMESTAMP = -1;
-
public:
static const GCId UNSET_GCID = (GCId)-1;
private:
GCId _id;
GCName _name;
GCCause::Cause _cause;
! jlong _start_timestamp;
! jlong _end_timestamp;
! jlong _sum_of_pauses;
! jlong _longest_pause;
public:
! SharedGCInfo(GCName name) : _id(UNSET_GCID), _name(name), _cause(GCCause::_last_gc_cause),
! _start_timestamp(UNSET_TIMESTAMP), _end_timestamp(UNSET_TIMESTAMP), _sum_of_pauses(0), _longest_pause(0) {}
void set_id(GCId id) { _id = id; }
GCId id() const { return _id; }
! void set_start_timestamp(jlong timestamp) { _start_timestamp = timestamp; }
! jlong start_timestamp() const { return _start_timestamp; }
! void set_end_timestamp(jlong timestamp) { _end_timestamp = timestamp; }
! jlong end_timestamp() const { return _end_timestamp; }
void set_name(GCName name) { _name = name; }
GCName name() const { return _name; }
void set_cause(GCCause::Cause cause) { _cause = cause; }
GCCause::Cause cause() const { return _cause; }
! void set_sum_of_pauses(jlong duration) { _sum_of_pauses = duration; }
! jlong sum_of_pauses() const { return _sum_of_pauses; }
! void set_longest_pause(jlong duration) { _longest_pause = duration; }
! jlong longest_pause() const { return _longest_pause; }
};
class ParallelOldGCInfo VALUE_OBJ_CLASS_SPEC {
void* _dense_prefix;
public:
--- 46,98 ----
class ReferenceProcessorStats;
class TimePartitions;
class BoolObjectClosure;
class SharedGCInfo VALUE_OBJ_CLASS_SPEC {
public:
static const GCId UNSET_GCID = (GCId)-1;
private:
GCId _id;
GCName _name;
GCCause::Cause _cause;
! Ticks _start_timestamp;
! Ticks _end_timestamp;
! Tickspan _sum_of_pauses;
! Tickspan _longest_pause;
public:
! SharedGCInfo(GCName name) :
! _id(UNSET_GCID),
! _name(name),
! _cause(GCCause::_last_gc_cause),
! _start_timestamp(),
! _end_timestamp(),
! _sum_of_pauses(),
! _longest_pause() {
! }
void set_id(GCId id) { _id = id; }
GCId id() const { return _id; }
! void set_start_timestamp(const Ticks& timestamp) { _start_timestamp = timestamp; }
! const Ticks start_timestamp() const { return _start_timestamp; }
! void set_end_timestamp(const Ticks& timestamp) { _end_timestamp = timestamp; }
! const Ticks end_timestamp() const { return _end_timestamp; }
void set_name(GCName name) { _name = name; }
GCName name() const { return _name; }
void set_cause(GCCause::Cause cause) { _cause = cause; }
GCCause::Cause cause() const { return _cause; }
! void set_sum_of_pauses(const Tickspan& duration) { _sum_of_pauses = duration; }
! const Tickspan sum_of_pauses() const { return _sum_of_pauses; }
! void set_longest_pause(const Tickspan& duration) { _longest_pause = duration; }
! const Tickspan longest_pause() const { return _longest_pause; }
};
class ParallelOldGCInfo VALUE_OBJ_CLASS_SPEC {
void* _dense_prefix;
public:
*** 114,134 ****
class GCTracer : public ResourceObj {
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 MetaspaceSummary& meta_space_summary) const;
void report_gc_reference_stats(const ReferenceProcessorStats& rp) const;
void report_object_count_after_gc(BoolObjectClosure* object_filter) NOT_SERVICES_RETURN;
bool has_reported_gc_start() const;
protected:
GCTracer(GCName name) : _shared_gc_info(name) {}
! virtual void report_gc_start_impl(GCCause::Cause cause, jlong timestamp);
! virtual void report_gc_end_impl(jlong timestamp, TimePartitions* time_partitions);
private:
void send_garbage_collection_event() const;
void send_gc_heap_summary_event(GCWhen::Type when, const GCHeapSummary& heap_summary) const;
void send_meta_space_summary_event(GCWhen::Type when, const MetaspaceSummary& meta_space_summary) const;
--- 120,140 ----
class GCTracer : public ResourceObj {
protected:
SharedGCInfo _shared_gc_info;
public:
! void report_gc_start(GCCause::Cause cause, const Ticks& timestamp);
! void report_gc_end(const Ticks& timestamp, TimePartitions* time_partitions);
void report_gc_heap_summary(GCWhen::Type when, const GCHeapSummary& heap_summary, const MetaspaceSummary& meta_space_summary) const;
void report_gc_reference_stats(const ReferenceProcessorStats& rp) const;
void report_object_count_after_gc(BoolObjectClosure* object_filter) NOT_SERVICES_RETURN;
bool has_reported_gc_start() const;
protected:
GCTracer(GCName name) : _shared_gc_info(name) {}
! virtual void report_gc_start_impl(GCCause::Cause cause, const Ticks& timestamp);
! virtual void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions);
private:
void send_garbage_collection_event() const;
void send_gc_heap_summary_event(GCWhen::Type when, const GCHeapSummary& heap_summary) const;
void send_meta_space_summary_event(GCWhen::Type when, const MetaspaceSummary& meta_space_summary) const;
*** 141,151 ****
uint _tenuring_threshold;
protected:
YoungGCTracer(GCName name) : GCTracer(name), _tenuring_threshold(UNSET_TENURING_THRESHOLD) {}
! virtual void report_gc_end_impl(jlong timestamp, TimePartitions* time_partitions);
public:
void report_promotion_failed(const PromotionFailedInfo& pf_info);
void report_tenuring_threshold(const uint tenuring_threshold);
--- 147,157 ----
uint _tenuring_threshold;
protected:
YoungGCTracer(GCName name) : GCTracer(name), _tenuring_threshold(UNSET_TENURING_THRESHOLD) {}
! virtual void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions);
public:
void report_promotion_failed(const PromotionFailedInfo& pf_info);
void report_tenuring_threshold(const uint tenuring_threshold);
*** 155,165 ****
};
class OldGCTracer : public GCTracer {
protected:
OldGCTracer(GCName name) : GCTracer(name) {}
! virtual void report_gc_end_impl(jlong timestamp, TimePartitions* time_partitions);
public:
void report_concurrent_mode_failure();
private:
--- 161,171 ----
};
class OldGCTracer : public GCTracer {
protected:
OldGCTracer(GCName name) : GCTracer(name) {}
! virtual void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions);
public:
void report_concurrent_mode_failure();
private:
*** 173,183 ****
public:
ParallelOldTracer() : OldGCTracer(ParallelOld) {}
void report_dense_prefix(void* dense_prefix);
protected:
! void report_gc_end_impl(jlong timestamp, TimePartitions* time_partitions);
private:
void send_parallel_old_event() const;
};
--- 179,189 ----
public:
ParallelOldTracer() : OldGCTracer(ParallelOld) {}
void report_dense_prefix(void* dense_prefix);
protected:
! void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions);
private:
void send_parallel_old_event() const;
};
*** 207,217 ****
public:
G1NewTracer() : YoungGCTracer(G1New) {}
void report_yc_type(G1YCType type);
! void report_gc_end_impl(jlong timestamp, TimePartitions* time_partitions);
void report_evacuation_info(EvacuationInfo* info);
void report_evacuation_failed(EvacuationFailedInfo& ef_info);
private:
void send_g1_young_gc_event();
--- 213,223 ----
public:
G1NewTracer() : YoungGCTracer(G1New) {}
void report_yc_type(G1YCType type);
! void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions);
void report_evacuation_info(EvacuationInfo* info);
void report_evacuation_failed(EvacuationFailedInfo& ef_info);
private:
void send_g1_young_gc_event();