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();
|