Runtime.getRuntime(). AvailableProcessors()

Я пытаюсь проверить производительность программы. Я ссылаюсь на это сообщение, получая системную информацию на уровне ОС. Когда Runtime.availableProcessors(), я получаю ответ 4. Я читаю availableProcessors(), но он сообщает, что этот метод возвращает число процессоров

  1. Может ли кто-нибудь объяснить, что означает количество процессоров?
  2. Почему в результате получается 4?

Я использую Windows 7 core i5 4gp.

Ответ 1

Число процессоров - это в основном количество исполняемых механизмов, способных запускать ваш код. Один из вариантов i5 - четырехъядерный процессор i5-7. Это могут быть физически разные процессоры (даже если они существуют внутри одного чипа), или они могут быть логическими процессорами, когда вы используете гиперпоточность.

Смотрите http://en.wikipedia.org/wiki/Intel_Core#Core_i5 и http://en.wikipedia.org/wiki/Hyper-threading для более подробно.

Ответ 2

Как вы читали, доступныйпроцессоры() - это метод, который возвращает number of processors available to the JVM. 4 означает количество процессоров, доступных в настоящее время для JVM.

Эти строки возвращают number of logical cores в Windows и других операционных системах.

На компьютере с четырехъядерным Core i7 с поддержкой Hyper-Threading он вернет 8.

На компьютере с четырехъядерным Q6700 этот метод вернет 4.

Ответ 3

У вас есть многоядерный процессор (в вашем случае это выглядит как Lynnfield). Каждый ядро ​​рассчитывается как отдельный процессор (отдельный процессор) для информации, поскольку каждое ядро ​​может выполнять инструкции одновременно с другими.

Ответ 4

Он не дает никаких ядер, доступных для процесса jvm. он может быть больше, чем фактический, если включена гиперпоточность.

Ответ 5

В этом контексте "процессор" - это "аппаратное обеспечение, обеспечивающее независимое выполнение", то есть ядро ​​cpu.

Это не "процессорный пакет" - единый аппаратный блок, который вы покупаете (это фактически 4 независимых процессора в одном пакете)