mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
Ergonomics now also takes available virtual memory into account when deciding for a heap size. The helper method to determine the maximum allocatable memory block now uses the appropriate OS specific calls to retrieve available virtual memory for the java process. In 32 bit environments this method now also searches for the maximum actually reservable amount of memory. Merge previously separate implementations for Linux/BSD/Solaris into a single method. Reviewed-by: jmasa, tamao
This commit is contained in:
parent
89120e7827
commit
bb5bd507d7
9 changed files with 92 additions and 57 deletions
|
@ -686,12 +686,17 @@ julong os::physical_memory() {
|
|||
return win32::physical_memory();
|
||||
}
|
||||
|
||||
julong os::allocatable_physical_memory(julong size) {
|
||||
bool os::has_allocatable_memory_limit(julong* limit) {
|
||||
MEMORYSTATUSEX ms;
|
||||
ms.dwLength = sizeof(ms);
|
||||
GlobalMemoryStatusEx(&ms);
|
||||
#ifdef _LP64
|
||||
return size;
|
||||
*limit = (julong)ms.ullAvailVirtual;
|
||||
return true;
|
||||
#else
|
||||
// Limit to 1400m because of the 2gb address space wall
|
||||
return MIN2(size, (julong)1400*M);
|
||||
*limit = MIN2((julong)1400*M, (julong)ms.ullAvailVirtual);
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue