Что такое алгоритм планирования JVM? - PullRequest
13 голосов
/ 12 мая 2010

Мне действительно интересно, как JVM работает с потоками! В своих поисках в интернете я нашел какой-то материал о RTSJ, но я не знаю, правильные ли это направления для моих ответов. Я также нашел эту тему на форумах Sun, http://forums.sun.com/thread.jspa?forumID=513&threadID=472453, но это не удовлетворительно.

Может кто-нибудь дать мне несколько указаний, материал, статьи или предложения по алгоритму планирования JVM?

Я также ищу информацию о конфигурациях по умолчанию потоков Java в планировщике, например, «сколько времени занимает каждый поток» в случае среза времени. И этот материал.

Буду признателен за любую помощь!

Спасибо!

Ответы [ 4 ]

18 голосов
/ 12 мая 2010

Нет ни одной виртуальной машины Java; JVM - это спецификация, и существует множество ее реализаций, включая, среди прочего, версию OpenJDK и ее версию Sun. Я не знаю наверняка, но я бы предположил, что любая разумная JVM просто использует базовый механизм потоков, предоставляемый ОС, который подразумевает POSIX Threads (pthreads) в UNIX (Mac OS X, Linux и т. Д.) И подразумевать потоки WIN32 в Windows. Как правило, эти системы по умолчанию используют стратегию циклического перебора.

4 голосов
/ 12 мая 2010

Это не так. JVM использует собственные потоки операционной системы, поэтому планирование выполняет ОС, а не JVM.

2 голосов
/ 12 мая 2010

Некоторое время назад я написал несколько статей о планировании потоков с точки зрения Java. Однако на основных платформах поведение потоков существенно зависит от потоков, лежащих в основе ОС.

Посмотрите, в частности, на моей странице, что такое Приоритет потока Java , в котором объясняется, как уровни приоритета Java соответствуют приоритетам потоков основной ОС, и как на практике это приводит к тому, что потоки с различными приоритетами ведут себя в Linux против Windows. Обсуждаемое основное различие заключается в том, что в Linux существует больше взаимосвязи между приоритетом потока и долей процессорного времени, выделенного для потока, тогда как в Windows это не так (см. Графики).

0 голосов
/ 19 июля 2012

У меня нет прав на комментирование, поэтому запись здесь ... JVM вызывает pthreads (обычно используется механизм потоков, есть другие варианты) для каждого соответствующего запроса. Но планирование здесь полностью выполняется ОС, выступающей в роли хоста. Но это предпочтительный подход, и можно планировать эти потоки с помощью JVM. Например, в Jikes RVM есть варианты переопределить этот подход к решению ОС. Например, в нем потоки называются RVMThread и их можно планировать / манипулировать с помощью классов пакетов org.jikesrvm.schedular Для более ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...