src/share/vm/memory/collectorPolicy.cpp

Print this page
rev 5350 : 8025313: MetaspaceMemoryPool incorrectly reports undefined size for max


  48 // CollectorPolicy methods.
  49 
  50 // Align down. If the aligning result in 0, return 'alignment'.
  51 static size_t restricted_align_down(size_t size, size_t alignment) {
  52   return MAX2(alignment, align_size_down_(size, alignment));
  53 }
  54 
  55 void CollectorPolicy::initialize_flags() {
  56   assert(max_alignment() >= min_alignment(),
  57       err_msg("max_alignment: " SIZE_FORMAT " less than min_alignment: " SIZE_FORMAT,
  58           max_alignment(), min_alignment()));
  59   assert(max_alignment() % min_alignment() == 0,
  60       err_msg("max_alignment: " SIZE_FORMAT " not aligned by min_alignment: " SIZE_FORMAT,
  61           max_alignment(), min_alignment()));
  62 
  63   if (MaxHeapSize < InitialHeapSize) {
  64     vm_exit_during_initialization("Incompatible initial and maximum heap sizes specified");
  65   }
  66 
  67   if (!is_size_aligned(MaxMetaspaceSize, max_alignment())) {
  68     FLAG_SET_ERGO(uintx, MaxMetaspaceSize,
  69         restricted_align_down(MaxMetaspaceSize, max_alignment()));
  70   }
  71 
  72   if (MetaspaceSize > MaxMetaspaceSize) {
  73     FLAG_SET_ERGO(uintx, MetaspaceSize, MaxMetaspaceSize);
  74   }
  75 
  76   if (!is_size_aligned(MetaspaceSize, min_alignment())) {
  77     FLAG_SET_ERGO(uintx, MetaspaceSize,
  78         restricted_align_down(MetaspaceSize, min_alignment()));
  79   }
  80 
  81   assert(MetaspaceSize <= MaxMetaspaceSize, "Must be");
  82 
  83   MinMetaspaceExpansion = restricted_align_down(MinMetaspaceExpansion, min_alignment());
  84   MaxMetaspaceExpansion = restricted_align_down(MaxMetaspaceExpansion, min_alignment());
  85 
  86   MinHeapDeltaBytes = align_size_up(MinHeapDeltaBytes, min_alignment());
  87 
  88   assert(MetaspaceSize    % min_alignment() == 0, "metapace alignment");
  89   assert(MaxMetaspaceSize % max_alignment() == 0, "maximum metaspace alignment");




  48 // CollectorPolicy methods.
  49 
  50 // Align down. If the aligning result in 0, return 'alignment'.
  51 static size_t restricted_align_down(size_t size, size_t alignment) {
  52   return MAX2(alignment, align_size_down_(size, alignment));
  53 }
  54 
  55 void CollectorPolicy::initialize_flags() {
  56   assert(max_alignment() >= min_alignment(),
  57       err_msg("max_alignment: " SIZE_FORMAT " less than min_alignment: " SIZE_FORMAT,
  58           max_alignment(), min_alignment()));
  59   assert(max_alignment() % min_alignment() == 0,
  60       err_msg("max_alignment: " SIZE_FORMAT " not aligned by min_alignment: " SIZE_FORMAT,
  61           max_alignment(), min_alignment()));
  62 
  63   if (MaxHeapSize < InitialHeapSize) {
  64     vm_exit_during_initialization("Incompatible initial and maximum heap sizes specified");
  65   }
  66 
  67   if (!is_size_aligned(MaxMetaspaceSize, max_alignment())) {
  68     MaxMetaspaceSize = restricted_align_down(MaxMetaspaceSize, max_alignment());

  69   }
  70 
  71   if (MetaspaceSize > MaxMetaspaceSize) {
  72     FLAG_SET_ERGO(uintx, MetaspaceSize, MaxMetaspaceSize);
  73   }
  74 
  75   if (!is_size_aligned(MetaspaceSize, min_alignment())) {
  76     FLAG_SET_ERGO(uintx, MetaspaceSize,
  77         restricted_align_down(MetaspaceSize, min_alignment()));
  78   }
  79 
  80   assert(MetaspaceSize <= MaxMetaspaceSize, "Must be");
  81 
  82   MinMetaspaceExpansion = restricted_align_down(MinMetaspaceExpansion, min_alignment());
  83   MaxMetaspaceExpansion = restricted_align_down(MaxMetaspaceExpansion, min_alignment());
  84 
  85   MinHeapDeltaBytes = align_size_up(MinHeapDeltaBytes, min_alignment());
  86 
  87   assert(MetaspaceSize    % min_alignment() == 0, "metapace alignment");
  88   assert(MaxMetaspaceSize % max_alignment() == 0, "maximum metaspace alignment");