--- old/src/share/vm/gc/parallel/psCompactionManager.cpp 2016-01-24 11:21:53.058780101 +0100 +++ new/src/share/vm/gc/parallel/psCompactionManager.cpp 2016-01-24 11:21:52.983781392 +0100 @@ -254,7 +254,13 @@ log_develop_trace(gc, ref)(" Process discovered as normal " PTR_FORMAT, p2i(discovered_addr)); cm->mark_and_push(discovered_addr); } + // Treat next as normal oop cm->mark_and_push(next_addr); + // Treat value as normal oop if Epehemeron + if (klass->reference_type() == REF_EPHEMERON) { + T* value_addr = (T*)java_lang_ref_Ephemeron::value_addr(obj); + cm->mark_and_push(value_addr); + } klass->InstanceKlass::oop_pc_follow_contents(obj, cm); }