< prev index next >
src/share/vm/gc/parallel/mutableNUMASpace.cpp
Print this page
rev 11780 : [mq]: webrev.0
rev 11781 : [mq]: webrev.1
*** 578,591 ****
// Try small pages if the chunk size is too small
if (base_space_size_pages / lgrp_spaces()->length() == 0
&& page_size() > (size_t)os::vm_page_size()) {
#ifdef LINUX
! // If we are using pin region, we cannot change the page size to default size
! // as we could free memory which is not expected for pin region in Linux.
if (UseLargePages && !os::can_commit_large_page_memory()) {
! vm_exit_during_initialization("Failed initializing NUMA. Too small heap size");
}
#endif // LINUX
set_page_size(os::vm_page_size());
rounded_bottom = (HeapWord*)round_to((intptr_t) bottom(), page_size());
rounded_end = (HeapWord*)round_down((intptr_t) end(), page_size());
--- 578,592 ----
// Try small pages if the chunk size is too small
if (base_space_size_pages / lgrp_spaces()->length() == 0
&& page_size() > (size_t)os::vm_page_size()) {
#ifdef LINUX
! // Changing the page size below can lead to freeing of memory. When using large pages
! // and the memory has been both reserved and committed, Linux does not support
! // freeing parts of it. So we fail initialization.
if (UseLargePages && !os::can_commit_large_page_memory()) {
! vm_exit_during_initialization("Failed initializing NUMA with large pages. Too small heap size");
}
#endif // LINUX
set_page_size(os::vm_page_size());
rounded_bottom = (HeapWord*)round_to((intptr_t) bottom(), page_size());
rounded_end = (HeapWord*)round_down((intptr_t) end(), page_size());
< prev index next >