Можете ли вы попробовать эту программу?
System.out.println("Max memory "+Runtime.getRuntime().maxMemory()/100 /1000+" MB.");
int mb = 0;
try {
List<byte[]> bytes = new ArrayList<>();
while (true) {
bytes.add(new byte[1000 * 1000]);
mb++;
}
} catch (OutOfMemoryError expected) {
}
System.out.println("OOME after " + mb + " MB allocated");
что он печатает для ваших настроек? За -mx8g
я получаю
Max memory 7635 MB.
OOME after 7025 MB allocated
Для -mx12g
Я получаю
Max memory 11453 MB.
OOME after 10012 MB allocated
и с -mx12g -XX:MaxNewSize=512m
я получаю
Max memory 12705 MB.
OOME after 12863 MB allocated