Подтвердить что ты не робот

Каноническая ссылка на внутренние компоненты JVM для программистов/разработчиков

Название довольно хорошо отражает мой вопрос. Мне интересно, есть ли хороший ресурс или точка отскока для вопросов о том, как JVM (а не только HotSpot, но это, очевидно, место для начала) реализует или обрабатывает определенную функциональность? Я не ищу материал, который в JLS или JVM Spec - Я знаю, что нужно идти туда первым.

Например: при попытке понять проблемы с производительностью мы часто встречаемся в разговорах не о том, что говорит спецификация, но о том, какие современные лучшие практики выглядят в практических реализациях. Например, существует некоторая городская мифология, в которой говорится, что "конечные классы лучше работают на Java, потому что JVM может встроить или иным образом оптимизировать такие вещи". Есть ли общий ресурс, к которому мы можем обратиться, чтобы оценить эти утверждения, которые плавают вокруг?

Я предлагаю ответ на свой вопрос, с рекомендациями HotSpot. Как насчет предложений других поставщиков? Особенности небольших JVM? Многоядерные особенности? Спецификации платформ, если они имеют значение? Особенности для других языков JVM?

Как раз для того, чтобы угадать пару потенциальных жалоб: 1) Это не о поиске преждевременных оптимизаций (и на самом деле, лучшее понимание платформы должно отговаривать лучшего образованного разработчика!); и 2) Я знаю, что Java-программисты должны сосредоточиться на хорошем, портативном коде с любым кодом, но для многих из нас особенности платформы в конечном итоге важны!

Это было вдохновлено некоторыми полезными комментариями к конкретному вопросу от Thorbjørn Ravn Andersen. Я рад собрать другие полезные примеры за пределами того, что я цитировал выше, чтобы мотивировать, почему люди могут захотеть таких ресурсов.

Некоторые интересные вопросы по SO: Оптимизация Tail-call в JVM, Возможности JVM Killer, оптимизации, которые будут бесполезны завтра, Различия между реализациями JVM.

Отредактировано для добавления:. Я дам ответ либо на лучшую упоминаемую ссылку, либо на того, кто предоставляет указатель на веб-сайт (возможно, построенный в ответ на этот вопрос), который лучше всего концентрирует/каталогизм JVM-реализация и практические последствия для клиентских языков и разработчиков.

4b9b3361

Ответ 1

  • OpenJDK "JVM Internals" wiki - это место для запуска HotSpot
  • Oracle Java SE 6 Performance White Paper и его предшественники дают много понимания, хотя и не организованы для моего вопроса как такового
  • О синхронизации для HotSpot см. мой здесь.