--- old/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2014-03-07 14:31:28.986446987 +0100 +++ new/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2014-03-07 14:31:28.856446127 +0100 @@ -35,6 +35,7 @@ #include "gc_implementation/g1/heapRegion.inline.hpp" #include "gc_implementation/g1/heapRegionRemSet.hpp" #include "gc_implementation/g1/heapRegionSeq.inline.hpp" +#include "gc_implementation/g1/stringDedup.hpp" #include "gc_implementation/shared/vmGCOperations.hpp" #include "gc_implementation/shared/gcTimer.hpp" #include "gc_implementation/shared/gcTrace.hpp" @@ -2533,6 +2534,9 @@ return; } + // Unlink stale oops in string deduplication queue/table + StringDedup::unlink(&g1_is_alive); + g1h->unlink_string_and_symbol_table(&g1_is_alive, /* process_strings */ false, // currently strings are always roots /* process_symbols */ true);