< prev index next >

src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp

Print this page
rev 8910 : full patch for jfr

*** 1,7 **** /* ! * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 280,289 **** --- 280,292 ---- } double max_gc_time = (double) MaxGCPauseMillis / 1000.0; double time_slice = (double) GCPauseIntervalMillis / 1000.0; _mmu_tracker = new G1MMUTrackerQueue(time_slice, max_gc_time); + if (EnableJFR) { + _ihop_control = create_ihop_control(); + } uintx confidence_perc = G1ConfidencePercent; // Put an artificial ceiling on this so that it's not set to a silly value. if (confidence_perc > 100) { confidence_perc = 100;
*** 318,327 **** --- 321,337 ---- _reserve_regions = 0; _collectionSetChooser = new CollectionSetChooser(); } + G1CollectorPolicy::~G1CollectorPolicy() { + if (EnableJFR) { + assert(_ihop_control != NULL, "sanity check"); + delete _ihop_control; + } + } + void G1CollectorPolicy::initialize_alignments() { _space_alignment = HeapRegion::GrainBytes; size_t card_table_alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable); size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size(); _heap_alignment = MAX3(card_table_alignment, _space_alignment, page_size);
*** 505,514 **** --- 515,528 ---- // We use ceiling so that if reserve_regions_d is > 0.0 (but // smaller than 1.0) we'll get 1. _reserve_regions = (uint) ceil(reserve_regions_d); _young_gen_sizer->heap_size_changed(new_number_of_regions); + + if (EnableJFR) { + _ihop_control->update_target_occupancy(new_number_of_regions * HeapRegion::GrainBytes); + } } uint G1CollectorPolicy::calculate_young_list_desired_min_length( uint base_min_length) { uint desired_min_length = 0;
*** 1187,1196 **** --- 1201,1219 ---- double update_rs_time_goal_ms = _mmu_tracker->max_gc_time() * MILLIUNITS * G1RSetUpdatingPauseTimePercent / 100.0; adjust_concurrent_refinement(phase_times()->average_time_ms(G1GCPhaseTimes::UpdateRS), phase_times()->sum_thread_work_items(G1GCPhaseTimes::UpdateRS), update_rs_time_goal_ms); _collectionSetChooser->verify(); + + if (EnableJFR) { + _ihop_control->send_trace_event(_g1->gc_tracer_stw()); + } + } + + G1IHOPControl* G1CollectorPolicy::create_ihop_control() { + assert(EnableJFR, "sanity check"); + return new G1StaticIHOPControl(InitiatingHeapOccupancyPercent); } #define EXT_SIZE_FORMAT "%.1f%s" #define EXT_SIZE_PARAMS(bytes) \ byte_size_in_proper_unit((double)(bytes)), \
< prev index next >