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