1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon Mar 21 18:38:00 2011 -0700 1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Tue Mar 22 13:36:33 2011 -0700 1.3 @@ -23,6 +23,7 @@ 1.4 */ 1.5 1.6 #include "precompiled.hpp" 1.7 +#include "classfile/symbolTable.hpp" 1.8 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp" 1.9 #include "gc_implementation/parallelScavenge/gcTaskManager.hpp" 1.10 #include "gc_implementation/parallelScavenge/generationSizer.hpp" 1.11 @@ -439,6 +440,14 @@ 1.12 reference_processor()->enqueue_discovered_references(NULL); 1.13 } 1.14 1.15 + if (!JavaObjectsInPerm) { 1.16 + // Unlink any dead interned Strings 1.17 + StringTable::unlink(&_is_alive_closure); 1.18 + // Process the remaining live ones 1.19 + PSScavengeRootsClosure root_closure(promotion_manager); 1.20 + StringTable::oops_do(&root_closure); 1.21 + } 1.22 + 1.23 // Finally, flush the promotion_manager's labs, and deallocate its stacks. 1.24 PSPromotionManager::post_scavenge(); 1.25