diff -r 619e075de029 src/share/vm/gc/g1/g1CollectionSet.cpp --- a/src/share/vm/gc/g1/g1CollectionSet.cpp Fri Sep 02 14:50:34 2016 +0200 +++ b/src/share/vm/gc/g1/g1CollectionSet.cpp Fri Sep 02 21:49:49 2016 +0200 @@ -396,6 +396,10 @@ return time_remaining_ms; } +static int compare(const void *a, const void*b) { + return (int)(*(uint*)a - *(uint*)b); +} + void G1CollectionSet::finalize_old_part(double time_remaining_ms) { double non_young_start_time_sec = os::elapsedTime(); double predicted_old_time_ms = 0.0; @@ -493,6 +497,8 @@ double non_young_end_time_sec = os::elapsedTime(); phase_times()->record_non_young_cset_choice_time_ms((non_young_end_time_sec - non_young_start_time_sec) * 1000.0); + + qsort(_collection_set_regions, _collection_set_cur_length, sizeof(uint), compare); } #ifdef ASSERT