src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp

Print this page
rev 6220 : [mq]: printffmt_size.gc.patch


  95     const size_t eden_alignment = heap->space_alignment();
  96     const size_t gen_alignment = heap->generation_alignment();
  97 
  98     assert(eden_space()->capacity_in_bytes() >= eden_alignment,
  99       "Alignment is wrong");
 100     size_t eden_avail = eden_space()->capacity_in_bytes() - eden_alignment;
 101     eden_avail = align_size_down(eden_avail, gen_alignment);
 102 
 103     assert(virtual_space()->committed_size() >= min_gen_size(),
 104       "minimum gen size is wrong");
 105     size_t gen_avail = virtual_space()->committed_size() - min_gen_size();
 106     assert(virtual_space()->is_aligned(gen_avail), "not aligned");
 107 
 108     const size_t max_contraction = MIN2(eden_avail, gen_avail);
 109     // See comment for ASPSOldGen::available_for_contraction()
 110     // for reasons the "increment" fraction is used.
 111     PSAdaptiveSizePolicy* policy = heap->size_policy();
 112     size_t result = policy->eden_increment_aligned_down(max_contraction);
 113     size_t result_aligned = align_size_down(result, gen_alignment);
 114     if (PrintAdaptiveSizePolicy && Verbose) {
 115       gclog_or_tty->print_cr("ASPSYoungGen::available_for_contraction: %d K",
 116         result_aligned/K);
 117       gclog_or_tty->print_cr("  max_contraction %d K", max_contraction/K);
 118       gclog_or_tty->print_cr("  eden_avail %d K", eden_avail/K);
 119       gclog_or_tty->print_cr("  gen_avail %d K", gen_avail/K);
 120     }
 121     return result_aligned;
 122   }
 123 
 124   return 0;
 125 }
 126 
 127 // The current implementation only considers to the end of eden.
 128 // If to_space is below from_space, to_space is not considered.
 129 // to_space can be.
 130 size_t ASPSYoungGen::available_to_live() {
 131   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
 132   const size_t alignment = heap->space_alignment();
 133 
 134   // Include any space that is committed but is not in eden.
 135   size_t available = pointer_delta(eden_space()->bottom(),
 136                                    virtual_space()->low(),
 137                                    sizeof(char));
 138 
 139   const size_t eden_capacity = eden_space()->capacity_in_bytes();




  95     const size_t eden_alignment = heap->space_alignment();
  96     const size_t gen_alignment = heap->generation_alignment();
  97 
  98     assert(eden_space()->capacity_in_bytes() >= eden_alignment,
  99       "Alignment is wrong");
 100     size_t eden_avail = eden_space()->capacity_in_bytes() - eden_alignment;
 101     eden_avail = align_size_down(eden_avail, gen_alignment);
 102 
 103     assert(virtual_space()->committed_size() >= min_gen_size(),
 104       "minimum gen size is wrong");
 105     size_t gen_avail = virtual_space()->committed_size() - min_gen_size();
 106     assert(virtual_space()->is_aligned(gen_avail), "not aligned");
 107 
 108     const size_t max_contraction = MIN2(eden_avail, gen_avail);
 109     // See comment for ASPSOldGen::available_for_contraction()
 110     // for reasons the "increment" fraction is used.
 111     PSAdaptiveSizePolicy* policy = heap->size_policy();
 112     size_t result = policy->eden_increment_aligned_down(max_contraction);
 113     size_t result_aligned = align_size_down(result, gen_alignment);
 114     if (PrintAdaptiveSizePolicy && Verbose) {
 115       gclog_or_tty->print_cr("ASPSYoungGen::available_for_contraction: " SIZE_FORMAT " K",
 116         result_aligned/K);
 117       gclog_or_tty->print_cr("  max_contraction " SIZE_FORMAT " K", max_contraction/K);
 118       gclog_or_tty->print_cr("  eden_avail " SIZE_FORMAT " K", eden_avail/K);
 119       gclog_or_tty->print_cr("  gen_avail " SIZE_FORMAT " K", gen_avail/K);
 120     }
 121     return result_aligned;
 122   }
 123 
 124   return 0;
 125 }
 126 
 127 // The current implementation only considers to the end of eden.
 128 // If to_space is below from_space, to_space is not considered.
 129 // to_space can be.
 130 size_t ASPSYoungGen::available_to_live() {
 131   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
 132   const size_t alignment = heap->space_alignment();
 133 
 134   // Include any space that is committed but is not in eden.
 135   size_t available = pointer_delta(eden_space()->bottom(),
 136                                    virtual_space()->low(),
 137                                    sizeof(char));
 138 
 139   const size_t eden_capacity = eden_space()->capacity_in_bytes();