src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp

Print this page




 779     _tenuring_threshold = (UseAdaptiveSizePolicy) ? InitialTenuringThreshold :
 780                                                     MaxTenuringThreshold;
 781   }
 782 
 783   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
 784   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 785 
 786   PSYoungGen* young_gen = heap->young_gen();
 787   PSOldGen* old_gen = heap->old_gen();
 788   PSPermGen* perm_gen = heap->perm_gen();
 789 
 790   // Set boundary between young_gen and old_gen
 791   assert(perm_gen->reserved().end() <= old_gen->object_space()->bottom(),
 792          "perm above old");
 793   assert(old_gen->reserved().end() <= young_gen->eden_space()->bottom(),
 794          "old above young");
 795   _young_generation_boundary = young_gen->eden_space()->bottom();
 796 
 797   // Initialize ref handling object for scavenging.
 798   MemRegion mr = young_gen->reserved();
 799   _ref_processor = ReferenceProcessor::create_ref_processor(
 800     mr,                         // span




 801     true,                       // atomic_discovery
 802     true,                       // mt_discovery
 803     NULL,                       // is_alive_non_header
 804     ParallelGCThreads,
 805     ParallelRefProcEnabled);
 806 
 807   // Cache the cardtable
 808   BarrierSet* bs = Universe::heap()->barrier_set();
 809   assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind");
 810   _card_table = (CardTableExtension*)bs;
 811 
 812   _counters = new CollectorCounters("PSScavenge", 0);
 813 }


 779     _tenuring_threshold = (UseAdaptiveSizePolicy) ? InitialTenuringThreshold :
 780                                                     MaxTenuringThreshold;
 781   }
 782 
 783   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
 784   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 785 
 786   PSYoungGen* young_gen = heap->young_gen();
 787   PSOldGen* old_gen = heap->old_gen();
 788   PSPermGen* perm_gen = heap->perm_gen();
 789 
 790   // Set boundary between young_gen and old_gen
 791   assert(perm_gen->reserved().end() <= old_gen->object_space()->bottom(),
 792          "perm above old");
 793   assert(old_gen->reserved().end() <= young_gen->eden_space()->bottom(),
 794          "old above young");
 795   _young_generation_boundary = young_gen->eden_space()->bottom();
 796 
 797   // Initialize ref handling object for scavenging.
 798   MemRegion mr = young_gen->reserved();
 799   _ref_processor =
 800     new ReferenceProcessor(mr,                         // span
 801                            ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
 802                            ParallelGCThreads,          // mt processing degree
 803                            true,                       // mt discovery
 804                            ParallelGCThreads,          // mt discovery degree
 805                            true,                       // atomic_discovery
 806                            NULL,                       // header provides liveness info
 807                            false);                     // next field updates do not need write barrier


 808 
 809   // Cache the cardtable
 810   BarrierSet* bs = Universe::heap()->barrier_set();
 811   assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind");
 812   _card_table = (CardTableExtension*)bs;
 813 
 814   _counters = new CollectorCounters("PSScavenge", 0);
 815 }