Java.lang.runtime.getRuntime (). Доступные processors (): разница между Java 8 (NCPUS = 32) и Java 11 (NCPU = 1)JAVA

Программисты JAVA общаются здесь
Anonymous
Java.lang.runtime.getRuntime (). Доступные processors (): разница между Java 8 (NCPUS = 32) и Java 11 (NCPU = 1)

Сообщение Anonymous »

Когда я использовал программу в нашем кластере Linux, которая нуждалась в количестве процессоров на моей машине, я был удивлен, увидев, что число, обнаруженное Java (ncpus = 1), отличалось от NPROC (NCPUS = 32)

Код: Выделить всё

nproc
32
< /code>
Поэтому я написал минимальную программу, чтобы проверить это: < /p>
import java.lang.management.*;
public class Test {
public static void main(String args[]) throws Exception {
OperatingSystemMXBean op = (OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean();
System.err.println("A - CPUS: " + op.getAvailableProcessors());
System.err.println("B - CPUS: " + java.lang.Runtime.getRuntime().availableProcessors());
}
}
Итак, используя java 11

Код: Выделить всё

    $ java -version  && javac Test.java && java Test
openjdk version "11.0.8-internal" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8-internal+0-adhoc..src)
OpenJDK 64-Bit Server VM (build 11.0.8-internal+0-adhoc..src, mixed mode)
A - CPUS: 1
B - CPUS: 1
Но используя java 8 возвращает ожидаемый результат:
$ java -version && javac Test.java && java Test
openjdk version "1.8.0_112"
OpenJDK Runtime Environment (Zulu 8.19.0.1-linux64) (build 1.8.0_112-b16)
OpenJDK 64-Bit Server VM (Zulu 8.19.0.1-linux64) (build 25.112-b16, mixed mode)
A - CPUS: 32
B - CPUS: 32
< /code>
Почему я получаю два разных числа для двух разных версий Java? Почему Java 11 выглядит неправильно?

Подробнее здесь: https://stackoverflow.com/questions/752 ... een-java-8

Вернуться в «JAVA»