< prev index next >

src/share/vm/gc_implementation/shenandoah/shenandoahHeuristics.hpp

Print this page
rev 10533 : [backport] Replace risky SBS::need_update_refs_barrier with straightforward check
rev 10584 : [backport] Move periodic GC decision making to GC heuristics base class
rev 10606 : [backport] Adaptive/Traversal heuristics rewrite for allocation rate
rev 10607 : [backport] Remove ShHeuristics::print_threshold
rev 10637 : [backport] Purge partial heuristics and connection matrix infrastructure

*** 51,102 **** log_info(gc)("Heuristics ergonomically sets -XX:" #name "=" #value); \ FLAG_SET_DEFAULT(name, value); \ } \ } while (0) - class ShenandoahCollectionSet; class ShenandoahHeapRegion; class ShenandoahHeuristics : public CHeapObj<mtGC> { protected: typedef struct { ShenandoahHeapRegion* _region; size_t _garbage; uint64_t _seqnum_last_alloc; } RegionData; - typedef struct { - ShenandoahHeapRegion* _region; - size_t _connections; - } RegionConnections; - bool _update_refs_early; bool _update_refs_adaptive; RegionData* _region_data; size_t _region_data_size; - RegionConnections* _region_connects; - size_t _region_connects_size; - uint _degenerated_cycles_in_a_row; uint _successful_cycles_in_a_row; size_t _bytes_in_cset; double _last_cycle_end; static int compare_by_garbage(RegionData a, RegionData b); static int compare_by_alloc_seq_ascending(RegionData a, RegionData b); static int compare_by_alloc_seq_descending(RegionData a, RegionData b); - static int compare_by_connects(RegionConnections a, RegionConnections b); RegionData* get_region_data_cache(size_t num); - RegionConnections* get_region_connects_cache(size_t num); - virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* set, RegionData* data, size_t data_size, size_t free) = 0; public: --- 51,99 ---- log_info(gc)("Heuristics ergonomically sets -XX:" #name "=" #value); \ FLAG_SET_DEFAULT(name, value); \ } \ } while (0) class ShenandoahCollectionSet; class ShenandoahHeapRegion; class ShenandoahHeuristics : public CHeapObj<mtGC> { + static const intx Concurrent_Adjust = 1; // recover from penalties + static const intx Degenerated_Penalty = 10; // how much to penalize average GC duration history on Degenerated GC + static const intx Full_Penalty = 20; // how much to penalize average GC duration history on Full GC + protected: typedef struct { ShenandoahHeapRegion* _region; size_t _garbage; uint64_t _seqnum_last_alloc; } RegionData; bool _update_refs_early; bool _update_refs_adaptive; RegionData* _region_data; size_t _region_data_size; uint _degenerated_cycles_in_a_row; uint _successful_cycles_in_a_row; size_t _bytes_in_cset; + double _cycle_start; double _last_cycle_end; + size_t _gc_times_learned; + size_t _gc_time_penalties; + TruncatedSeq* _gc_time_history; + static int compare_by_garbage(RegionData a, RegionData b); static int compare_by_alloc_seq_ascending(RegionData a, RegionData b); static int compare_by_alloc_seq_descending(RegionData a, RegionData b); RegionData* get_region_data_cache(size_t num); virtual void choose_collection_set_from_regiondata(ShenandoahCollectionSet* set, RegionData* data, size_t data_size, size_t free) = 0; public:
*** 112,129 **** virtual void record_cycle_end(); virtual void record_phase_time(ShenandoahPhaseTimings::Phase phase, double secs); ! virtual void print_thresholds(); ! ! virtual bool should_start_normal_gc() const = 0; virtual bool should_start_update_refs(); - virtual bool update_refs() const; - virtual bool should_degenerate_cycle(); virtual void record_success_concurrent(); virtual void record_success_degenerated(); --- 109,122 ---- virtual void record_cycle_end(); virtual void record_phase_time(ShenandoahPhaseTimings::Phase phase, double secs); ! virtual bool should_start_normal_gc() const; virtual bool should_start_update_refs(); virtual bool should_degenerate_cycle(); virtual void record_success_concurrent(); virtual void record_success_degenerated();
*** 132,143 **** virtual void record_allocation_failure_gc(); virtual void record_explicit_gc(); - virtual void record_peak_occupancy(); - virtual void start_choose_collection_set() { } virtual void end_choose_collection_set() { } --- 125,134 ----
< prev index next >