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 } |