-
Type:
Enhancement
-
Resolution: Unresolved
-
Priority:
P4
-
Affects Version/s: None
-
Component/s: hotspot
Parallel GC specializes InstanceRefKlass::oop_oop_iterate_reverse() in psPromotionManager.inline.hpp explicitly with the following comment:
// This closure specialization will override the one that is defined in
// instanceRefKlass.inline.cpp. It swaps the order of oop_oop_iterate and
// oop_oop_iterate_ref_processing. Unfortunately G1 and Parallel behaves
// significantly better (especially in the Derby benchmark) using opposite
// order of these function calls.
This seems very strange code: if it were better for G1 too, why hasn't it been added there too? And, if it's better, why not use this order for all collectors? (Why didn't it apply to Serial and CMS?)
See if this specialization is still needed (and actually in use), try to understand is reason too.
// This closure specialization will override the one that is defined in
// instanceRefKlass.inline.cpp. It swaps the order of oop_oop_iterate and
// oop_oop_iterate_ref_processing. Unfortunately G1 and Parallel behaves
// significantly better (especially in the Derby benchmark) using opposite
// order of these function calls.
This seems very strange code: if it were better for G1 too, why hasn't it been added there too? And, if it's better, why not use this order for all collectors? (Why didn't it apply to Serial and CMS?)
See if this specialization is still needed (and actually in use), try to understand is reason too.