Correto VS Oracle на 32-битной Windows с -Xmx
Я проводил сравнение между Amazon Correto и Oracle JRE (Windows 32-bit) и заметил, что они выделяют максимум памяти по-разному.
Итак, я сделал этот пример кода и запустил его на разных JRE. Результаты, достижения:
Amazon Corretto 32 бита - jre1.8.0_202
- Без -Xmx
- Runtime.getRuntime (). MaxMemory(): 652476416
- С -Xmx1024m
- Runtime.getRuntime (). MaxMemory (): 954466304
- С -Xms1024m
- Runtime.getRuntime (). MaxMemory (): 1029177344
- Без -Xmx
Amazon Corretto 64 бит - jre1.8.0_202
- Без -Xmx
- Runtime.getRuntime (). MaxMemory (): 947388416
- С -Xmx1024m
- Runtime.getRuntime (). MaxMemory(): 954728448
- С -Xms1024m
- Runtime.getRuntime (). MaxMemory (): 1029177344
- Без -Xmx
Oracle 32 бита - jre1.8.0_202
- Без -Xmx
- Runtime.getRuntime (). MaxMemory(): 259522560
- С -Xmx1024m
- Runtime.getRuntime (). MaxMemory (): 1037959168
- С -Xms1024m
- Runtime.getRuntime (). MaxMemory(): 1037959168
- Без -Xmx
Oracle 64 бит - jre1.8.0_202
- Без -Xmx
- Runtime.getRuntime (). MaxMemory (): 947388416
- С -Xmx1024m
- Runtime.getRuntime (). MaxMemory(): 954728448
- С -Xms1024m
- Runtime.getRuntime (). MaxMemory (): 1029177344
- Без -Xmx
Вот код:
public class Main {
/**
* @param args
*/
public static void main( String[] args ) {
System.out.println( "Runtime.getRuntime().maxMemory(): " + Runtime.getRuntime().maxMemory() ); // JOSE_RENATO Remover
}
}
Итак, почему Oracle JRE 32 бита выделяет больше памяти при использовании параметра -Xmx?
И почему это поведение отличается на 64-битной версии?