894 } 895 896 void PSParallelCompact::initialize_space_info() 897 { 898 memset(&_space_info, 0, sizeof(_space_info)); 899 900 ParallelScavengeHeap* heap = gc_heap(); 901 PSYoungGen* young_gen = heap->young_gen(); 902 903 _space_info[old_space_id].set_space(heap->old_gen()->object_space()); 904 _space_info[eden_space_id].set_space(young_gen->eden_space()); 905 _space_info[from_space_id].set_space(young_gen->from_space()); 906 _space_info[to_space_id].set_space(young_gen->to_space()); 907 908 _space_info[old_space_id].set_start_array(heap->old_gen()->start_array()); 909 } 910 911 void PSParallelCompact::initialize_dead_wood_limiter() 912 { 913 const size_t max = 100; 914 _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0; 915 _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; 916 _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev); 917 DEBUG_ONLY(_dwl_initialized = true;) 918 _dwl_adjustment = normal_distribution(1.0); 919 } 920 921 // Simple class for storing info about the heap at the start of GC, to be used 922 // after GC for comparison/printing. 923 class PreGCValues { 924 public: 925 PreGCValues() { } 926 PreGCValues(ParallelScavengeHeap* heap) { fill(heap); } 927 928 void fill(ParallelScavengeHeap* heap) { 929 _heap_used = heap->used(); 930 _young_gen_used = heap->young_gen()->used_in_bytes(); 931 _old_gen_used = heap->old_gen()->used_in_bytes(); 932 _metadata_used = MetaspaceAux::used_bytes(); 933 }; 934 935 size_t heap_used() const { return _heap_used; } | 894 } 895 896 void PSParallelCompact::initialize_space_info() 897 { 898 memset(&_space_info, 0, sizeof(_space_info)); 899 900 ParallelScavengeHeap* heap = gc_heap(); 901 PSYoungGen* young_gen = heap->young_gen(); 902 903 _space_info[old_space_id].set_space(heap->old_gen()->object_space()); 904 _space_info[eden_space_id].set_space(young_gen->eden_space()); 905 _space_info[from_space_id].set_space(young_gen->from_space()); 906 _space_info[to_space_id].set_space(young_gen->to_space()); 907 908 _space_info[old_space_id].set_start_array(heap->old_gen()->start_array()); 909 } 910 911 void PSParallelCompact::initialize_dead_wood_limiter() 912 { 913 const size_t max = 100; 914 _dwl_mean = double(MIN2((size_t)ParallelOldDeadWoodLimiterMean, max)) / 100.0; 915 _dwl_std_dev = double(MIN2((size_t)ParallelOldDeadWoodLimiterStdDev, max)) / 100.0; 916 _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev); 917 DEBUG_ONLY(_dwl_initialized = true;) 918 _dwl_adjustment = normal_distribution(1.0); 919 } 920 921 // Simple class for storing info about the heap at the start of GC, to be used 922 // after GC for comparison/printing. 923 class PreGCValues { 924 public: 925 PreGCValues() { } 926 PreGCValues(ParallelScavengeHeap* heap) { fill(heap); } 927 928 void fill(ParallelScavengeHeap* heap) { 929 _heap_used = heap->used(); 930 _young_gen_used = heap->young_gen()->used_in_bytes(); 931 _old_gen_used = heap->old_gen()->used_in_bytes(); 932 _metadata_used = MetaspaceAux::used_bytes(); 933 }; 934 935 size_t heap_used() const { return _heap_used; } |