Моя простая программа hello world запускается более 10 минут, когда -XX:+AlwaysPreTouch
включен с большой кучей:
$ time java -Xmx1000G -Xms1000G -XX:+AlwaysPreTouch Test
Hello World!
real 10m9.330s
user 1m9.932s
sys 9m8.128s
Это неожиданно, потому что pretouch был распараллелен в Java 9 , и я использую Java 11. Я все еще вижу, что pretouch использует только один поток.
Почему предварительное касание кучи выполняется последовательно, а не параллельно? Нужно ли настраивать дополнительные параметры для включения параллельной предварительной настройки? Я использую 80-ядерный сервер с 2 ТБ памяти.
Java-версия:
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Debian-3bpo91)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Debian-3bpo91, mixed mode, sharing)
Java-код:
public class Test {
public static void main(String [] args) {
System.out.println("Hello World!");
}
}