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