430 ParallelCompactData::create_vspace(size_t count, size_t element_size) |
430 ParallelCompactData::create_vspace(size_t count, size_t element_size) |
431 { |
431 { |
432 const size_t raw_bytes = count * element_size; |
432 const size_t raw_bytes = count * element_size; |
433 const size_t page_sz = os::page_size_for_region_aligned(raw_bytes, 10); |
433 const size_t page_sz = os::page_size_for_region_aligned(raw_bytes, 10); |
434 const size_t granularity = os::vm_allocation_granularity(); |
434 const size_t granularity = os::vm_allocation_granularity(); |
435 _reserved_byte_size = align_size_up(raw_bytes, MAX2(page_sz, granularity)); |
435 _reserved_byte_size = align_up(raw_bytes, MAX2(page_sz, granularity)); |
436 |
436 |
437 const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 : |
437 const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 : |
438 MAX2(page_sz, granularity); |
438 MAX2(page_sz, granularity); |
439 ReservedSpace rs(_reserved_byte_size, rs_align, rs_align > 0); |
439 ReservedSpace rs(_reserved_byte_size, rs_align, rs_align > 0); |
440 os::trace_page_sizes("Parallel Compact Data", raw_bytes, raw_bytes, page_sz, rs.base(), |
440 os::trace_page_sizes("Parallel Compact Data", raw_bytes, raw_bytes, page_sz, rs.base(), |
1982 // in the total; otherwise the next young gen GC will simply bail out to a |
1982 // in the total; otherwise the next young gen GC will simply bail out to a |
1983 // full GC. |
1983 // full GC. |
1984 const size_t alignment = old_gen->virtual_space()->alignment(); |
1984 const size_t alignment = old_gen->virtual_space()->alignment(); |
1985 const size_t eden_used = eden_space->used_in_bytes(); |
1985 const size_t eden_used = eden_space->used_in_bytes(); |
1986 const size_t promoted = (size_t)size_policy->avg_promoted()->padded_average(); |
1986 const size_t promoted = (size_t)size_policy->avg_promoted()->padded_average(); |
1987 const size_t absorb_size = align_size_up(eden_used + promoted, alignment); |
1987 const size_t absorb_size = align_up(eden_used + promoted, alignment); |
1988 const size_t eden_capacity = eden_space->capacity_in_bytes(); |
1988 const size_t eden_capacity = eden_space->capacity_in_bytes(); |
1989 |
1989 |
1990 if (absorb_size >= eden_capacity) { |
1990 if (absorb_size >= eden_capacity) { |
1991 return false; // Must leave some space in eden. |
1991 return false; // Must leave some space in eden. |
1992 } |
1992 } |