20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/shared/copyFailedInfo.hpp"
27 #include "gc/shared/gcHeapSummary.hpp"
28 #include "gc/shared/gcId.hpp"
29 #include "gc/shared/gcTimer.hpp"
30 #include "gc/shared/gcTrace.hpp"
31 #include "gc/shared/objectCountEventSender.hpp"
32 #include "gc/shared/referenceProcessorStats.hpp"
33 #include "memory/heapInspection.hpp"
34 #include "memory/resourceArea.hpp"
35 #include "runtime/os.hpp"
36 #include "utilities/globalDefinitions.hpp"
37 #include "utilities/macros.hpp"
38 #include "utilities/ticks.hpp"
39 #if INCLUDE_G1GC
40 #include "gc/g1/evacuationInfo.hpp"
41 #endif
42
43 void GCTracer::report_gc_start_impl(GCCause::Cause cause, const Ticks& timestamp) {
44 _shared_gc_info.set_cause(cause);
45 _shared_gc_info.set_start_timestamp(timestamp);
46 }
47
48 void GCTracer::report_gc_start(GCCause::Cause cause, const Ticks& timestamp) {
49 report_gc_start_impl(cause, timestamp);
50 }
51
52 void GCTracer::report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions) {
53 _shared_gc_info.set_sum_of_pauses(time_partitions->sum_of_pauses());
54 _shared_gc_info.set_longest_pause(time_partitions->longest_pause());
55 _shared_gc_info.set_end_timestamp(timestamp);
56
57 send_phase_events(time_partitions);
58 send_garbage_collection_event();
59 }
60
183 void OldGCTracer::report_concurrent_mode_failure() {
184 send_concurrent_mode_failure_event();
185 }
186
187 #if INCLUDE_G1GC
188 void G1MMUTracer::report_mmu(double time_slice_sec, double gc_time_sec, double max_time_sec) {
189 send_g1_mmu_event(time_slice_sec * MILLIUNITS,
190 gc_time_sec * MILLIUNITS,
191 max_time_sec * MILLIUNITS);
192 }
193
194 void G1NewTracer::report_yc_type(G1YCType type) {
195 _g1_young_gc_info.set_type(type);
196 }
197
198 void G1NewTracer::report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions) {
199 YoungGCTracer::report_gc_end_impl(timestamp, time_partitions);
200 send_g1_young_gc_event();
201 }
202
203 void G1NewTracer::report_evacuation_info(EvacuationInfo* info) {
204 send_evacuation_info_event(info);
205 }
206
207 void G1NewTracer::report_evacuation_failed(EvacuationFailedInfo& ef_info) {
208 send_evacuation_failed_event(ef_info);
209 ef_info.reset();
210 }
211
212 void G1NewTracer::report_evacuation_statistics(const G1EvacSummary& young_summary, const G1EvacSummary& old_summary) const {
213 send_young_evacuation_statistics(young_summary);
214 send_old_evacuation_statistics(old_summary);
215 }
216
217 void G1NewTracer::report_basic_ihop_statistics(size_t threshold,
218 size_t target_ccupancy,
219 size_t current_occupancy,
220 size_t last_allocation_size,
221 double last_allocation_duration,
222 double last_marking_length) {
223 send_basic_ihop_statistics(threshold,
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/shared/copyFailedInfo.hpp"
27 #include "gc/shared/gcHeapSummary.hpp"
28 #include "gc/shared/gcId.hpp"
29 #include "gc/shared/gcTimer.hpp"
30 #include "gc/shared/gcTrace.hpp"
31 #include "gc/shared/objectCountEventSender.hpp"
32 #include "gc/shared/referenceProcessorStats.hpp"
33 #include "memory/heapInspection.hpp"
34 #include "memory/resourceArea.hpp"
35 #include "runtime/os.hpp"
36 #include "utilities/globalDefinitions.hpp"
37 #include "utilities/macros.hpp"
38 #include "utilities/ticks.hpp"
39 #if INCLUDE_G1GC
40 #include "gc/g1/g1EvacuationInfo.hpp"
41 #endif
42
43 void GCTracer::report_gc_start_impl(GCCause::Cause cause, const Ticks& timestamp) {
44 _shared_gc_info.set_cause(cause);
45 _shared_gc_info.set_start_timestamp(timestamp);
46 }
47
48 void GCTracer::report_gc_start(GCCause::Cause cause, const Ticks& timestamp) {
49 report_gc_start_impl(cause, timestamp);
50 }
51
52 void GCTracer::report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions) {
53 _shared_gc_info.set_sum_of_pauses(time_partitions->sum_of_pauses());
54 _shared_gc_info.set_longest_pause(time_partitions->longest_pause());
55 _shared_gc_info.set_end_timestamp(timestamp);
56
57 send_phase_events(time_partitions);
58 send_garbage_collection_event();
59 }
60
183 void OldGCTracer::report_concurrent_mode_failure() {
184 send_concurrent_mode_failure_event();
185 }
186
187 #if INCLUDE_G1GC
188 void G1MMUTracer::report_mmu(double time_slice_sec, double gc_time_sec, double max_time_sec) {
189 send_g1_mmu_event(time_slice_sec * MILLIUNITS,
190 gc_time_sec * MILLIUNITS,
191 max_time_sec * MILLIUNITS);
192 }
193
194 void G1NewTracer::report_yc_type(G1YCType type) {
195 _g1_young_gc_info.set_type(type);
196 }
197
198 void G1NewTracer::report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions) {
199 YoungGCTracer::report_gc_end_impl(timestamp, time_partitions);
200 send_g1_young_gc_event();
201 }
202
203 void G1NewTracer::report_evacuation_info(G1EvacuationInfo* info) {
204 send_evacuation_info_event(info);
205 }
206
207 void G1NewTracer::report_evacuation_failed(EvacuationFailedInfo& ef_info) {
208 send_evacuation_failed_event(ef_info);
209 ef_info.reset();
210 }
211
212 void G1NewTracer::report_evacuation_statistics(const G1EvacSummary& young_summary, const G1EvacSummary& old_summary) const {
213 send_young_evacuation_statistics(young_summary);
214 send_old_evacuation_statistics(old_summary);
215 }
216
217 void G1NewTracer::report_basic_ihop_statistics(size_t threshold,
218 size_t target_ccupancy,
219 size_t current_occupancy,
220 size_t last_allocation_size,
221 double last_allocation_duration,
222 double last_marking_length) {
223 send_basic_ihop_statistics(threshold,
|